【问题标题】:Download Jasper report instead of opening in browser下载 Jasper 报告而不是在浏览器中打开
【发布时间】:2015-05-25 20:07:06
【问题描述】:

我正在使用 PrimeFaces 5.1 和 JSF 2.2

以下是我的代码:我正在从 TableModelDate 方法生成 PDF 文件,一切正常。但是它在我的浏览器中打开了如何不打开就下载它。

public void PDF() throws JRException, IOException {
    HttpServletResponse httpServletResponse = (HttpServletResponse) FacesContext.getCurrentInstance().getExternalContext().getResponse();
    simpleReport();
    httpServletResponse.addHeader("Content-disposition", "filename=report.pdf");
    ServletOutputStream servletOutputStream = httpServletResponse.getOutputStream();
    JasperExportManager.exportReportToPdfStream(jasperPrint,servletOutputStream);
    FacesContext.getCurrentInstance().responseComplete();
}

public void simpleReport() {
    TableModelData();
    try {
        String reportPath = FacesContext.getCurrentInstance().getExternalContext().getRealPath("/reports/");
        JasperCompileManager.compileReportToFile(reportPath+"/Report.jrxml");
        jasperPrint = JasperFillManager.fillReport(reportPath+"/Report.jasper", new HashMap(),new JRTableModelDataSource(tableModel));
    } catch (JRException ex) {
        ex.printStackTrace();
    }
}

【问题讨论】:

标签: jsf jasper-reports


【解决方案1】:

你离它很近。

只需添加 attachment; 语句和 filename=xx.pdf 喜欢:

httpServletResponse.addHeader("Content-disposition", "attachment; filename=report.pdf");

它告诉Http Servlet响应文件包含的是附件;

额外:

每当浏览器打开PDF格式时,它也会显示保存选项,您也可以在浏览器中打开(加载)后保存

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2011-11-08
    • 2012-08-18
    • 2019-03-08
    • 2013-10-25
    • 2014-01-29
    相关资源
    最近更新 更多