【问题标题】:How to fix an error during generating PDF: PdfBoxTextRenderer.getWidth(PdfBoxTextRenderer.java:300)如何在生成 PDF 时修复错误:PdfBoxTextRenderer.getWidth(PdfBoxTextRenderer.java:300)
【发布时间】:2019-03-22 17:51:30
【问题描述】:

我使用 openhtmltopdf 库将我的 html 模板转换为 PDF:

    try (OutputStream os = new FileOutputStream(filePath);
            PDDocument doc = new PDDocument()) {
        for (String html : htmlPagesWithValues) {
            PdfRendererBuilder builder = new PdfRendererBuilder();
            builder.defaultTextDirection(BaseRendererBuilder.TextDirection.LTR);
            builder.useDefaultPageSize(210, 297, BaseRendererBuilder.PageSizeUnits.MM);
            builder.useProtocolsStreamImplementation(new InternalFSStreamFactory(), "localProtocol");
            builder.withHtmlContent(html, "");
            builder.useSVGDrawer(new BatikSVGDrawer());
            builder.usePDDocument(doc);
            PdfBoxRenderer renderer = builder.buildPdfRenderer();
            renderer.createPDFWithoutClosing();
        }
        doc.save(os);
    } catch (Exception ex) {
        log.debug("Stacktrace: ", ex);
    }

在生成 PDF 文件期间,我得到以下堆栈跟踪:

java.lang.NullPointerException: null 在 com.openhtmltopdf.pdfboxout.PdfBoxTextRenderer.getWidth(PdfBoxTextRenderer.java:300) 在 com.openhtmltopdf.layout.Breaker.doBreakText(Breaker.java:147) 在 com.openhtmltopdf.layout.Breaker.doBreakText(Breaker.java:115) 在 com.openhtmltopdf.layout.Breaker.breakText(Breaker.java:109) 在 com.openhtmltopdf.layout.InlineBoxing.layoutText(InlineBoxing.java:959)

...

【问题讨论】:

    标签: java html-to-pdf openhtmltopdf


    【解决方案1】:

    我发现了问题。我使用托管在我们服务器上的 PDF 文件上的图像。 Openpdftohtml 库尝试通过我们的公共 URL 访问图像,但该 URL 不可用。添加访问PDF后创建成功。我也在 Github 上打开了这个问题:https://github.com/danfickle/openhtmltopdf/issues/267

    【讨论】:

    • 您的问题似乎已关闭,因为您没有提供测试用例。即使库可能会从更好的异常消息中受益。
    • 我已经完整描述了问题并在找到原因后回答了我自己的问题。
    • 问题是该类中的第 300 行只能在变量 'font' 为空时抛出 NPE,所以如果它是由某些文件不可访问引起的,显然不是一个好的异常消息。
    • 是的,我同意你的看法。我花了一些时间才发现问题所在。
    猜你喜欢
    • 2020-07-15
    • 2011-07-24
    • 1970-01-01
    • 1970-01-01
    • 2019-05-04
    • 2020-12-18
    • 2019-08-08
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多