我在iText 7中找不到HTMLWorker、ParseXHtml、Document和其他相关类(与iText 5不同)。有人能告诉我如何使用iText 7将HTML文件转换为PDF吗?
谢谢, Sumanasa
HTMLWorker
已经被废弃多年了。在 iText 5 中,你应该真的、真的使用 XMLWorker
。iText 5 已经 EOL(只有安全更新,没有新功能),所以请迁移到 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);
HTMLWorker
早已过时,并且其目的不是将完整的HTML页面转换。它基本上不知道网页由<head>
和<body>
部分组成。
XMLWorker
旨在作为一个通用的框架来解析XML。为了避免这些冲突,iText 7推出了convertToPdf
函数,它能够将HTML转换为PDF。HtmlConverter.convertToPdf(new File(src), new File(dest));
.html
文件添加到第一个参数中,并提供文件保存位置以将HTML保存为PDF(文件路径)。