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);
或者您可以使用DefaultFontProvider 并在构造函数中指定其设置:
FontProvider fontProvider = new DefaultFontProvider(false, false, true);
properties.setFontProvider(fontProvider);
DefaultFontProvider在构造函数中有三个参数:第一个是指定是否使用标准字体(Helvetica、Courier、Times等),第二个是指定是否使用自带的字体pdfHTML,第三个指定是否加载系统字体。 DefaultFontProvider 只是FontProvider 的子类,因此您可以在创建实例后随时调用addDirectory 或addFont。