【发布时间】:2017-04-15 10:10:01
【问题描述】:
我在 iText 7 中找不到 HTMLWorker、ParseXHtml、Document 和其他相关类(与 iText 5 不同)。谁能告诉我如何使用 iText 7 将 HTML 文件转换为 PDF?
谢谢你, 苏门萨
【问题讨论】:
我在 iText 7 中找不到 HTMLWorker、ParseXHtml、Document 和其他相关类(与 iText 5 不同)。谁能告诉我如何使用 iText 7 将 HTML 文件转换为 PDF?
谢谢你, 苏门萨
【问题讨论】:
HTMLWorker 多年前已被弃用。在 iText 5 中,你真的应该,真的使用XMLWorker。 iText 5 已停产(仅安全更新,无附加功能),因此请迁移到 iText 7。【讨论】:
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);
【讨论】:
据 iText Group 的创始人称,HTMLWorker 在很久以前就已被弃用,其目的不是转换完整的 HTML 页面。它基本上不知道网页由<head> 和<body> 部分组成。
XMLWorker 是一个用于解析 XML 的通用框架。为了避免这些冲突,iText 7 使用了convertToPdf 函数,该函数能够将 HTML 转换为 PDF。
下面是代码 sn-p。
HtmlConverter.convertToPdf(new File(src), new File(dest));
将您的 HTML 编码或.html 文件添加到第一个参数中,并提供文件位置以将 HTML 保存到提供的位置(文件路径)中的 PDF 中。
【讨论】: