使用ITextRenderer制作PDF时,图片无法显示

4

我正在尝试将我的HTML内容转换成PDF。我的HTML文档中包含一些文本和图像(PNG)。使用iTextRenderer进行转换后,PDF中只有图片没有呈现出来,其他文本内容都正常呈现。我也打印出了我的HTML内容(使用Sysout),image标签正确呈现,但在PDF中不显示。

请查看下面的Java代码:

ITextRenderer renderer = new ITextRenderer();
Document resultDoc = (Document) result.getNode();
renderer.setDocument(resultDoc, "");
renderer.layout();


ByteArrayOutputStream baos = new ByteArrayOutputStream();
renderer.createPDF(baos);
baos.close();
return Base64.getEncoder().encodeToString(baos.toByteArray());

您将此问题标记为iText问题,但ITextRenderer不是iText问题。它是一个Flying Saucer类,因此应将其标记为Flying Saucer问题。Flying Saucer是使用旧版本iText的产品,并且未经iText Group认可。如果您想将HTML转换为PDF,则应使用iText 7 + pdfHTML,如HTML to PDF教程中所述。 - Bruno Lowagie
为什么要“应该”? - Kukeltje
1个回答

2
我已经通过更改依赖项来解决了这个问题。以前我使用的是以下依赖项,它无法将图像解析到PDF文件中。
<!-- https://mvnrepository.com/artifact/org.xhtmlrenderer/core-renderer -->
    <dependency>
    <groupId>org.xhtmlrenderer</groupId>
    <artifactId>core-renderer</artifactId> 
    <version>R8pre2</version>
    </dependency> 

然后我用下面的依赖项替换了它,就可以正常工作了。不需要进行任何代码更改。

  <!-- https://mvnrepository.com/artifact/org.xhtmlrenderer/flying-saucer-pdf-itext5 -->
    <dependency>
        <groupId>org.xhtmlrenderer</groupId>
        <artifactId>flying-saucer-pdf-itext5</artifactId>
        <version>9.1.13</version>
    </dependency>

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接