我无法在iText 7中找到HTMLWorker,ParseXHtml,Document和其他相关类(与iText 5不同)。谁能告诉我如何使用iText 7将HTML文件转换为PDF?
谢谢你, Sumanasa
答案 0 :(得分:3)
HTMLWorker
多年前已被弃用。在iText 5中你应该真的,真的使用XMLWorker
。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中提供的位置(文件路径)中。