iText 7 - 缺少 HTMLWorker 和 ParseXHtml
iText 7 - HTMLWorker and ParseXHtml missing
我无法在 iText 7 中找到 HTMLWorker、ParseXHtml、Document 和其他相关 类(与 iText 5 不同)。谁能告诉我如何使用 iText 7 将 HTML 文件转换为 PDF?
谢谢,
苏门答腊
HTMLWorker
很多年前就被弃用了。在 iText 5 中你真的应该 真的 使用 XMLWorker
。 iText 5 已停产(仅安全更新,无新增功能)所以请迁移到 iText 7。
- 对于 iText 7,使用附加组件 pdfHTML。请参阅下面的 Alexey 的回答。
iText pdfHTML
模块已作为 XmlWorker
的替代品发布。
C#版本可以从NuGet Gallery. Java version can be downloaded from the Artifactory.
下载
您要查找的主要 class 是 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。
以下是代码片段。
HtmlConverter.convertToPdf(new File(src), new File(dest));
将您的 HTML 编码或 .html
文件添加到第一个参数中,并提供文件位置以在提供的位置(文件路径)中将 HTML 保存到 PDF 中。
我无法在 iText 7 中找到 HTMLWorker、ParseXHtml、Document 和其他相关 类(与 iText 5 不同)。谁能告诉我如何使用 iText 7 将 HTML 文件转换为 PDF?
谢谢, 苏门答腊
HTMLWorker
很多年前就被弃用了。在 iText 5 中你真的应该 真的 使用XMLWorker
。 iText 5 已停产(仅安全更新,无新增功能)所以请迁移到 iText 7。- 对于 iText 7,使用附加组件 pdfHTML。请参阅下面的 Alexey 的回答。
iText pdfHTML
模块已作为 XmlWorker
的替代品发布。
C#版本可以从NuGet Gallery. Java version can be downloaded from the Artifactory.
您要查找的主要 class 是 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。
以下是代码片段。
HtmlConverter.convertToPdf(new File(src), new File(dest));
将您的 HTML 编码或 .html
文件添加到第一个参数中,并提供文件位置以在提供的位置(文件路径)中将 HTML 保存到 PDF 中。