我正在创建一个由几个 PdfPTables 组成的 PDF,其中一些 PdfCell 由简单的短语组成,而其他的则需要解析 HTML 片段。为了确保已解析的 HTML 添加了所需的样式并在正确的位置,我将其存储在段落中,然后将其添加到 PdfPCell。然而,这样做会导致我在处理一些 HTML 标记(如列表和引号)时遇到问题。下面是我正在做的一个粗略示例,我可以做些什么来正确处理 HTML 列表、引号等?
例如:iText 正确处理 HTML 列表并知道将其转换为 iText 列表/列表项。我需要将该列表添加到我的 PdfTable 中。我知道将列表元素放在段落中会取消正确的样式(整个列表最终在一行没有编号)并且想知道处理这个的正确方法
PdfPTable table = new PdfPTable(1);
table.addCell(parseHtmlToParagraph(htmlString));
table.addCell(new Phrase("Name" + user.getName()));
public Paragraph parseHtmlToParagraph(String str) throws IOException {
StringReader body = new StringReader(str);
final Paragraph para = new Paragraph();
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) {
para.add(e);
}
}
}
}, body);
return para;
}