1

我有这个 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的注释:

在此处输入图像描述

4

2 回答 2

1

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

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

以下是代码片段。

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

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

于 2019-03-17T14:50:11.300 回答
0

我的朋友刚刚解决了它:

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

简单的 :)

于 2013-05-15T21:40:10.730 回答