itext pdf生成在解析一些html标签时失败

问题描述 投票:0回答:2

我有这个html代码,它驻留在db中,我想用pdf解析它。我正在使用itext进行pdf生成。这是db中的html:

<p>no note.</p><br>
<ul><br>
<li><strong>section</strong></li><br>
</ul><br>
<ol><br>
<li>first</li><br>
<li><em>second</em></li><br>
<li><span style="text-decoration: underline;">third</span></li><br>
</ol><br>

这是解析并插入到pdf中的内容:

<p>no note.</p><br>
<strong>section</strong><br>
first<br>
<em>second</em><br>
<span style="text-decoration: underline;">third</span><br>

这也是我的代码将html解析为pdf:

org.jsoup.nodes.Document doc = Jsoup.parse(text);
List<Element> objects;
objects = HTMLWorker.parseToList(new StringReader(doc.outerHtml()), null);
for (Element object : objects) {
        Element ele = (Element) object;
        document.add(ele);
}

可以看出数字和子弹没有显示(html中的“ol”和“li”标签)。怎么解决这个?

编辑

有关更多说明。这是我在html中的文字:

这是插入pdf的注释:

java html pdf html-parsing itext
2个回答
0
投票

我的朋友刚刚解决了它:

XMLWorkerHelper.getInstance().parseXHtml(new XHtmlElementHandler(document), new StringReader(text));

简单:)


0
投票

HTMLWorker很久以前就被弃用了,它的目的不是转换完整的HTML页面。它基本上不知道网页由<head><body>部分组成。

XMLWorker是一个解析XML的通用框架。为了避免这些冲突,iText 7开始使用convertToPdf功能,它能够将HTML转换为PDF。

以下是代码片段。

HtmlConverter.convertToPdf(new File(src), new File(dest));

将HTML编码添加到第一个参数中,并提供文件位置,以便在提供的位置(文件路径)中将HTML保存为PDF。

© www.soinside.com 2019 - 2024. All rights reserved.