Jasper 报告无法导出为 PDF

Posted

技术标签:

【中文标题】Jasper 报告无法导出为 PDF【英文标题】:Jasper Report can't be exported to PDF 【发布时间】:2019-06-20 22:32:42 【问题描述】:

我正在尝试将 jasper 报告导出为 PDF,但它不起作用。

这是我正在使用的代码。注意: contextPath 变量包含实际的上下文。它具有我的 .war 文件的绝对路径的值

C:\Program Files\Apache Software Foundation\Tomcat 8.5\webapps\myWarFile\

String sourceFileName = 
    contextPath + "WEB-INF/classes/report/ClsReportBean.jasper";
JasperFillManager.fillReportToFile(sourceFileName, "C://sample_report.pdf", 
    parameters, new JRBeanCollectionDataSource(lstDataSource));

问题是当我尝试将报告导出为 PDF 时。这是错误信息。

net.sf.jasperreports.engine.JRException:保存文件时出错: C:\sample_report.pdf。

提前致谢。

【问题讨论】:

1.请将完整的堆栈跟踪作为文本而不是图片发布。 2.尝试使用其他路径导出文件,因为应用程序可能无法写入C盘 正如@samabcde 所说,如果是权限问题,请尝试保存在 Tomcat 的临时目录中,它应该可以工作。 【参考方案1】:

我用这段代码解决了这个问题……

try 

   File file = new File(exportPdfPath);
        if (!file.exists()) 
            LOGGER.info("creating folder");
            file.mkdir();
            file.setWritable(true);
        


        JasperPrint something = JasperFillManager.fillReport(sourceFileName, parameters, new JRBeanCollectionDataSource(lstDataSource));
        OutputStream output = new FileOutputStream(new File(exportPdfPath+"/test.pdf")); 
        JasperExportManager.exportReportToPdfStream(something, output); 
            output.close();

    

【讨论】:

【参考方案2】:

JasperFillManager.fillReportToFile 不会生成 PDF,而是生成序列化的填充报表对象。出于某种原因,填充的报告引用了一个不可序列化的DefaultJasperReportsContext 实例。这不应该发生,但要了解它为什么会发生,我们需要有关此案的更多细节。

但是如果你想生成一个PDF,你不需要序列化填充的报告。您可以执行以下操作直接生成 PDF:

JasperRunManager.runReportToPdfFile(sourceFileName, "C://sample_report.pdf", 
    parameters, new JRBeanCollectionDataSource(lstDataSource));

【讨论】:

谢谢,我尝试了您的解决方案,但现在收到此错误消息 net.sf.jasperreports.engine.JRException: 保存文件时出错:C://sample_report.pdf 原因by ... 引起:java.io.NotSerializableException: net.sf.jasperreports.engine.DefaultJasperReportsContext 你能发布完整的异常堆栈跟踪吗?

以上是关于Jasper 报告无法导出为 PDF的主要内容,如果未能解决你的问题,请参考以下文章

Jasper Reports PDF 不导出西里尔文值

利用程序将.jrxml导出为.jasper文件并用PDF显示

JasperReports 服务器:如何使用 url 将报告导出为 html 文件

导出为 pdf 时如何正确呈现印地语?

Jasper Report 以 CSV 格式导出带有科学计数法的数字

MS Access 将报告导出为 pdf