如何解决iText 未显示所有 HTML 元素
我正在使用 Java 和 iText 5 从许多 HTML 部分构建一个 PDF 文件。
我知道这是 iText 的旧版本,但我们有另一个 PDF 文件,我们在其中附加了音频(ogg 文件),但无法在新版本上运行。对此的任何帮助也将不胜感激:)
所以,问题是,我有一个这样的 HTML 片段:
<span>
<p>Some text <strong>with bold</strong></p>
<p>Another paragraph</p>
<p>Third paragraph <br /> with a line break</p>
<img src="..." alt="Image file" />
</span>
在 Java 中我这样做:
ElementList list2 = XMLWorkerHelper.parseToElementList(htmlString,null);
Paragraph htmlPiece= new Paragraph();
for (Element element2 : list2) {
htmlPiece.add(element2);
}
htmlPiece.setMultipliedLeading(1);
htmlPiece.setIndentationLeft(50f);
document.add(htmlPiece);
问题是一些 HTML 标签(strong、ul、ol)在 PDF 上显示得很好,但其他的(p、br、img)不起作用。它们只是消失了,所有内容都显示在生成的 PDF 文件中的一行中。
有关如何使其工作的任何建议?或者至少,有什么问题?
谢谢!
解决方法
到目前为止我还没有使用过这个版本,所以我不确定为什么它只适用于某些标签。
Paragraph htmlPiece= new Paragraph();
try(StringReader reader = new StringReader(htmlString)) {
java.util.List<Element> list2 = com.itextpdf.text.html.simpleparser.HTMLWorker.parseToList(reader,null);
for (Element element : list2) {
htmlPiece.add(element);
}
}
htmlPiece.setMultipliedLeading(1);
htmlPiece.setIndentationLeft(50f);
document.add(htmlPiece);
我添加了 XML Worker 依赖
<!-- https://mvnrepository.com/artifact/com.itextpdf.tool/xmlworker -->
<dependency>
<groupId>com.itextpdf.tool</groupId>
<artifactId>xmlworker</artifactId>
<version>5.4.0</version>
</dependency>
此外,不推荐使用 HTMLWorker,因此请使用最新版本的 XMLWorker,如下所示
XMLWorkerHelper.getInstance().parseXHtml(new ElementHandler() {
@Override
public void add(Writable w) {
if (w instanceof WritableElement) {
List<Element> elements = ((WritableElement) w).elements();
for (Element e : elements) {
htmlPiece.add(e);
}
}
}
},reader);
这些是在 iText 5.4.0 中编写的,语法上会有一些变化。也检查一下 试试这段代码,让我知道它是否有效
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。