gpt4 book ai didi

java - iText 部分 HTML 渲染

转载 作者:太空宇宙 更新时间:2023-11-04 06:26:37 25 4
gpt4 key购买 nike

我正在使用 Java 的 iText PDF 库来生成 PDF。我想部分渲染一些 HTML 内容而不是整个文档。这是我想要部分呈现为 HTML 的部分。

waterIndexTrendTable.getDefaultCell().setHorizontalAlignment(Element.ALIGN_LEFT); 
waterIndexTrendTable.addCell(new Phrase(weit.getUnit(), smallFont));

waterIndexTrendTable 是一个 PdfPTable。 weit.getUnit() 返回带有 HTML 标签的内容。我想将 HTML 渲染为 PDF。

最佳答案

如果 weit.getUnit() 返回 HTML,那么如果您使用问题中显示的代码片段,您将在单元格中看到该 HTML 代码。

为了避免这种情况,您需要将 HTML 呈现为 iText 对象列表。这显示在 ParseHtmlObjects 的第一部分中。示例:

// CSS
CSSResolver cssResolver =
XMLWorkerHelper.getInstance().getDefaultCssResolver(true);
// HTML
HtmlPipelineContext htmlContext = new HtmlPipelineContext(null);
htmlContext.setTagFactory(Tags.getHtmlTagProcessorFactory());
htmlContext.autoBookmark(false);
// Pipelines
ElementList elements = new ElementList();
ElementHandlerPipeline end = new ElementHandlerPipeline(elements, null);
HtmlPipeline html = new HtmlPipeline(htmlContext, end);
CssResolverPipeline css = new CssResolverPipeline(cssResolver, html);
// XML Worker
XMLWorker worker = new XMLWorker(css, true);
XMLParser p = new XMLParser(worker);
p.parse(new FileInputStream(HTML));

现在您有了一个带有 iText 对象的对象 elements,您可以将其添加到单元格中:

PdfPCell cell = new PdfPCell;
for (Element e : elements) {
cell.addElement(e);
}

假设 weit.getUnit() 返回的 HTML 包含的数据多于您需要的数据,那么 iText 就很难读懂您的想法并找出您想要保留哪些部分以及想要丢弃哪些部分。

也许您只对特定的元素类型感兴趣。在这种情况下,您可以检查 eParagraphList 还是 iText 中可用的任何其他类型。

或者您可以将 HTML 减少到需要预先渲染的部分。

无论如何:您不应该指望计算机能够猜测某些 HTML 的哪些部分对您很重要,哪些部分不重要;-)

关于java - iText 部分 HTML 渲染,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26712392/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com