0

我正在使用 JR 生成 PDF 发票。在我的本地机器(linux ubuntu)上完美运行:

FacesContext fc = FacesContext.getCurrentInstance();
        ExternalContext ec = fc.getExternalContext();
        String templateAbsolutePath = ec.getRealPath(templateRelativePath);

        JasperReport jasperReport;
        try {
            jasperReport = JasperCompileManager.compileReport(templateAbsolutePath);        
            JasperPrint jasperPrint = JasperFillManager.fillReport(jasperReport, getParametriFattura(fattura), datasource );

            JasperExportManager.exportReportToPdfStream(jasperPrint, ec.getResponseOutputStream());

        } catch (JRException e) {
            e.printStackTrace();
        } catch (IOException e) {
            e.printStackTrace();
        }

        fc.responseComplete();  

但是,当我将我的战争部署到登台服务器(linux ubuntu)时,它表明:

在此处输入图像描述

我想这是一个微不足道的问题,但我可以从哪里开始呢?

我特意省略了配置、系统细节等等……因为我不知道有什么用处。

4

1 回答 1

2

您需要明确告诉网络浏览器它是 PDF 文件,而不是 (X)HTML 文件。

ec.setResponseContentType("application/pdf");

注意:这需要在任何位写入响应正文之前设置。

于 2013-01-08T17:29:17.953 回答