Как исправить ошибку при создании PDF: PdfBoxTextRenderer.getWidth(PdfBoxTextRenderer.java:300)

Я использую библиотеку открытьhtmlвpdf для преобразования моих 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 at com.openhtmltopdf.pdfboxout.PdfBoxTextRenderer.getWidth(PdfBoxTextRenderer.java:300) at com.openhtmltopdf.layout.Breaker.doBreakText(Breaker.java:147) at com.openhtmltopdf.layout.Breaker.doBreakText(Breaker.java:115) at com.openhtmltopdf.layout.Breaker.breakText(Breaker.java:109) at com.openhtmltopdf.layout.InlineBoxing.layoutText(InlineBoxing.java:959)

...

🤔 А знаете ли вы, что...
Java используется в большом количестве крупных корпоративных приложений и систем.


1 653
1

Ответ:

Решено

Я нашел проблему. Я использую изображения в файле PDF, размещенном на нашем сервере. Библиотека открытьpdftohtml пыталась получить доступ к изображениям по нашему общедоступному URL-адресу, но этот URL-адрес был недоступен. После добавления доступа PDF успешно создан. Я также открыл вопрос на Github: https://github.com/danfickle/openhtmltopdf/issues/267