iText 7 - 缺少HTMLWorker和ParseXHtml

时间:2016-11-30 22:21:34

标签: itext itext7

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

谢谢你, Sumanasa

3 个答案:

答案 0 :(得分:3)

  1. HTMLWorker多年前已被弃用。在iText 5中你应该真的,真的使用XMLWorker
  2. 目前您无法使用iText 7将HTML转换为PDF。尚未。 2017年初iText软件将为iText发布html2pdf-addon 7.关注iText(阅读博客或在Twitter上关注我们)在iText 7的html2pdf-addon准备就绪时获得通知。
  3. 完全可以同时使用iText 5和iText 7:5用于转换XMLWorker,7用于其他任何PDF相关。或者继续使用iText 5几个月。

答案 1 :(得分:3)

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

您正在寻找的主要班级是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);

答案 2 :(得分:0)

根据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中提供的位置(文件路径)中。

相关问题