iText 7 - HTMLWorker和ParseXHtml丢失

4

我在iText 7中找不到HTMLWorker、ParseXHtml、Document和其他相关类(与iText 5不同)。有人能告诉我如何使用iText 7将HTML文件转换为PDF吗?

谢谢, Sumanasa

3个回答

4
  1. HTMLWorker 已经被废弃多年了。在 iText 5 中,你应该真的、真的使用 XMLWorker。iText 5 已经 EOL(只有安全更新,没有新功能),所以请迁移到 iText 7。
  2. 对于 iText 7,请使用附加组件 pdfHTML。请参见下面的 Alexey 的答案。

4

iText的pdfHTML模块已经发布,作为XmlWorker的替代品。 C#版本可以从NuGet Gallery下载。Java版本可以从Artifactory下载。

您需要查找的主要类是HtmlConverter。它有很多静态方法重载,用于将html转换为要添加到布局结构中的元素列表,整个com.itextpdf.layout.Document实例,或者直接到.pdf文件。

将.html文件转换为.pdf文件的示例:

HtmlConverter.convertToPdf(new File(htmlFilePath), new File(outPdfFilePath));

将HTML转换为布局元素的示例:

String html = "<p>Hello world!</p>";
List<IElement> lst = HtmlConverter.convertToElements(html);

此外,pdfHTML现在支持@media规则,因此您可能希望提供一个配置,用于应用CSS,例如使用@media print指令,您需要相应设置MediaDeviceDescription
ConverterProperties properties = new ConverterProperties()
     .setMediaDeviceDescription(new MediaDeviceDescription(MediaType.PRINT));
HtmlConverter.convertToPdf(new File(htmlPath), new File(outPdfPath), properties);

为了在将HTML转换为PDF时指定要使用的字体集,您还可以设置FontProvider

FontProvider fontProvider = new FontProvider();
fontProvider.addDirectory(fontsDir)
properties.setFontProvider(fontProvider);

1
根据iText Group的创始人所说,HTMLWorker早已过时,并且其目的不是将完整的HTML页面转换。它基本上不知道网页由<head><body>部分组成。 XMLWorker旨在作为一个通用的框架来解析XML。为了避免这些冲突,iText 7推出了convertToPdf函数,它能够将HTML转换为PDF。
以下是代码片段。
HtmlConverter.convertToPdf(new File(src), new File(dest));

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

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接