我正在尝试在Java中使用iText 7。想要将HTML / XHTML转换为PDF。
显然,iText 7 core
中不存在 xmlworker.jar
。
iText 7的替代品是什么?
有什么解决方案吗?
我正在尝试在Java中使用iText 7。想要将HTML / XHTML转换为PDF。
显然,iText 7 core
中不存在 xmlworker.jar
。
iText 7的替代品是什么?
有什么解决方案吗?
XML Worker是iText路线图上的下一步计划,因此它将可用于iText 7。但首先我们需要完成将Java版的iText 7移植到C#版的iText 7,并且仍在努力记录iText 7。例如,请参见:iText 7:构建块。
在开源中,人们经常发布,尽快发布。与保持所有代码封闭直到一切都完成不同,我们选择采用开源方式发布:准备好了就发布。准备好的那些,会尽快发布。
iText的大改造要求我们重新编写XML Worker。好处是,iText 7是以XML Worker为重点编写的。我提到的教程中标有键的所有项目都是“iText 7中的新内容”,例如属性继承(这使我们能够以更好的方式应用CSS)。
完成后,您将看到显着的改进。
html2pdf
有点让人困惑(html2pdf = pdfHTML)。您可以在此处找到教程:https://developers.itextpdf.com/content/itext-7-converting-html-pdf-pdfhtml - Bruno LowagiepdfHTML
模块已作为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);
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
。