首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >JasperReports无法导出PDF文件

JasperReports无法导出PDF文件
EN

Stack Overflow用户
提问于 2019-06-17 16:31:12
回答 1查看 935关注 0票数 1

我正在尝试编写简单的代码来将JasperPrint导出到pdf文件。准确地说,将字节写入HTTP响应。

我的简单代码如下所示:

代码语言:javascript
复制
public static void writePdfReport(final JasperPrint jp,
                                  final HttpServletResponse response,
                                  final String reportName) throws IOException, JRException {
    response.setContentType("application/pdf");
    response.setHeader("Content-disposition",
            "inline; filename=" + (reportName == null ? jp.getName() : reportName).replace('"', '_') + ".pdf");

    final OutputStream outStream = response.getOutputStream();

    final byte[] pdfBytes = JasperExportManager.exportReportToPdf(jp);
    response.setContentLength(pdfBytes.length);

    final ByteArrayInputStream bais = new ByteArrayInputStream(pdfBytes);
    IOUtils.copy(bais, outStream);

    outStream.flush();
    IOUtils.closeQuietly(outStream);
}

我的Maven pom文件:

代码语言:javascript
复制
 <dependency>
            <groupId>net.sf.jasperreports</groupId>
            <artifactId>jasperreports</artifactId>
            <version>6.8.1</version>
        </dependency>
        <dependency>
            <groupId>net.sf.jasperreports</groupId>
            <artifactId>jasperreports-fonts</artifactId>
            <version>6.8.1</version>
        </dependency>
        <dependency>
            <groupId>ar.com.fdvs</groupId>
            <artifactId>DynamicJasper</artifactId>
            <version>5.1.2</version>
        </dependency>

问题是,每当我调用writePdfReport函数时,就会得到这个异常:

代码语言:javascript
复制
java.lang.NoClassDefFoundError: com/lowagie/text/pdf/FontMapper

    at net.sf.jasperreports.engine.JasperExportManager.exportToPdf(JasperExportManager.java:214)
    at net.sf.jasperreports.engine.JasperExportManager.exportReportToPdf(JasperExportManager.java:544)
    at com.kendaxa.fexcom.core.reports.ReportWriter.writePdfReport(ReportWriter.java:31)
    at com.kendaxa.fexcom.core.reports.GenericTableReportSpec.Should generate simple table PDF report(GenericTableReportSpec.groovy:100)
Caused by: java.lang.ClassNotFoundException: com.lowagie.text.pdf.FontMapper
    at java.base/jdk.internal.loader.BuiltinClassLoader.loadClass(BuiltinClassLoader.java:583)
    at java.base/jdk.internal.loader.ClassLoaders$AppClassLoader.loadClass(ClassLoaders.java:178)
    at java.base/java.lang.ClassLoader.loadClass(ClassLoader.java:521)
    ... 4 more

我做了我的研究,首先,问题似乎是在这里建议的JasperReports库中(4岁):Dependency error in jasper-reports from itext

然而,应用一个公认的答案是没有帮助的,即使是最新的版本,我也会遇到同样的错误。

我还尝试了一种不同的方法来导出受此启发的文件,Export JasperReport to PDF OutputStream?没有任何结果。

有没有人有一个最新的工作解决方案导出pdf文件?谢谢你给我的礼物。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2019-06-19 13:06:43

com.lowagie.text.pdf.FontMapper类确实存在于2.1.7版本的com.lowagie.itext jar中。

您是否将此精确版本用作依赖项?在我的工作示例中,这是我使用的版本。

代码语言:javascript
复制
<dependency>
   <groupId>com.lowagie</groupId>
   <artifactId>itext</artifactId>
   <version>2.1.7</version>
</dependency>

如果您已经这样做了,我将确保您的运行时环境只有这个2.1.7版本的itext jar。是否有可能在部署的jar库中包含另一个版本的itext?

我将一个工作示例推到了https://github.com/cameronhurd/simple-jasper-report

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/56635440

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档