Jsf Chrome pdf api没有';下载ServletOutputStream jasper pdf文件

Jsf Chrome pdf api没有';下载ServletOutputStream jasper pdf文件,jsf,jasper-reports,export-to-pdf,Jsf,Jasper Reports,Export To Pdf,我试图在JSF2.2应用程序中显示一个使用JasperReports 6.2.0制作的web打印报告。 在我的h:form上设置target=“\u blank”后,报告在新选项卡中正确显示,但下载按钮不起作用 代码如下: HttpServletResponse response = (HttpServletResponse) FacesContext context = FacesContext.getCurrentInstance().getExternalContext().getResp

我试图在JSF2.2应用程序中显示一个使用JasperReports 6.2.0制作的web打印报告。 在我的h:form上设置target=“\u 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();
碰巧报告显示正确,但下载不会起任何作用

我不希望在加载报告选项卡时显示“另存为”选项,但ChromeAPI的下载按钮尝试保存我的页面(html),而不是将内容保存为.pdf文件


提前感谢。

已成功生成您的错误:在chomre:Version 51.0.2704.106 m上,您有一种替代方法。您可以使用

httpServletResponse.addHeader(“内容处置”、“附件;文件名=“+outputFileName”)


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

我编辑了问题的文本,但问题不一样。我想以内联方式显示pdf流,但我也希望ChromeAPI的下载按钮下载生成的pdf,而不是从我的页面下载html。谢谢你的关注,谢谢你的回答。实际上,我目前在应用程序中使用了两个不同的按钮,一个用于显示报告,另一个用于使用附件标题下载。无论如何,谢谢你。