Как исправить ошибку при создании PDF: PdfBoxTextRenderer.getWidth (PdfBoxTextRenderer.java:300) - PullRequest
0 голосов
/ 22 марта 2019

Я использую 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) at com.openhtmltopdf.layout.InlineBoxing.layoutText (InlineBoxing.java:959)

...

1 Ответ

0 голосов
/ 22 марта 2019

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

...