我有这个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的注释:
我的朋友刚刚解决了它:
XMLWorkerHelper.getInstance().parseXHtml(new XHtmlElementHandler(document), new StringReader(text));
简单:)
HTMLWorker
很久以前就被弃用了,它的目的不是转换完整的HTML页面。它基本上不知道网页由<head>
和<body>
部分组成。
XMLWorker
是一个解析XML的通用框架。为了避免这些冲突,iText 7开始使用convertToPdf
功能,它能够将HTML转换为PDF。
以下是代码片段。
HtmlConverter.convertToPdf(new File(src), new File(dest));
将HTML编码添加到第一个参数中,并提供文件位置,以便在提供的位置(文件路径)中将HTML保存为PDF。