Chrome pdf api无法下载ServletOutputStream jasper pdf文件

时间:2016-04-29 18:08:51

标签: jsf jasper-reports export-to-pdf

我试图在使用JSF 2.2的应用程序中显示使用JasperReports 6.2.0制作的Web打印报告。 在设置target =" _blank"之后,在新选项卡中正确显示报告。在我的h:表单上,但下载按钮不起作用。

以下是代码:

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文件。

提前致谢。

1 个答案:

答案 0 :(得分:0)

成功生成错误:在chomre:版本51.0.2704.106 m,您有另一种方法。您可以使用

直接下载此类文件

httpServletResponse.addHeader("Content-disposition", "attachment; filename=" + outputFileName);

命令还定义文件名。希望能找到问题的解决方案。