【发布时间】:2016-08-25 00:06:21
【问题描述】:
我正在尝试在具有 JSF 2.2 的应用程序中显示使用 JasperReports 6.2.0 制作的网络打印报告。 在我的 h:form 上设置 target="_blank" 后,报告在新选项卡中正确显示,但下载按钮不起作用。
代码如下:
HttpServletResponse response = (HttpServletResponse) FacesContext context = FacesContext.getCurrentInstance().getExternalContext().getResponse();
response.setContentType("application/pdf");
ServletOutputStream responseStream = response.getOutputStream();
ByteArrayInputStream relatorioSourceStream = new ByteArrayInputStream(reportJasper);
JasperPrint jp = JasperFillManager.fillReport(relatorioSourceStream, parameters, getConnection());
File file = new java.io.File(path);
if (file.exists()) {
file.delete();
} else if (file.getParentFile() != null) {
file.getParentFile().mkdirs();
file.createNewFile();
}
JRPdfExporter exporter = new JRPdfExporter();
exporter.setExporterInput(new SimpleExporterInput(jp));
exporter.setExporterOutput(new SimpleOutputStreamExporterOutput(file));
SimplePdfExporterConfiguration conf = new SimplePdfExporterConfiguration();
exporter.setConfiguration(conf);
exporter.exportReport();
InputStream is = new FileInputStream(file);
int read = 0;
byte[] bytes = new byte[4096];
while ((read = is.read(bytes)) != -1) {
responseStream.write(bytes, 0, read);
}
responseStream.flush();
responseStream.close();
报告正确显示,但下载不会做任何事情。
它不是一个“另存为”选项,我希望在加载报告选项卡时显示,它碰巧 chrome api 的下载按钮尝试保存我的页面 (html) 而不是将内容保存为 .pdf文件。
提前致谢。
【问题讨论】:
-
我编辑了问题的文本,但这不是同一个问题。我想显示流 pdf 内联,但我也希望 chrome API 的下载按钮下载生成的 PDF,而不是从我的页面下载 html。感谢您的关注。
标签: jsf jasper-reports export-to-pdf