iText 7核心中缺少xmlworker



我正在尝试在Java中使用iText 7。想要将HTML/XHTML转换为PDF。

显然CCD_ 1不存在于CCD_ 2中。

iText 7的替代品是什么?

有什么解决方案吗?

XML Worker是iText路线图上的下一件事,所以是的,它将适用于iText 7。但首先,我们需要完成从Java的iText 7到C#的iText7的端口,我们仍在努力记录iText7。例如,请参见:iText 7:构建基块。

在开源中,一个经常发布,一个很快发布。我们没有关闭所有代码,直到一切完成,而是选择了开源的发布方式:任何准备好的东西都会被发布。任何未准备好的,都会在准备好后立即发布。

iText的大修要求我们重写XMLWorker。好处:iText 7是在考虑XML Worker的情况下编写的。我提到的教程中所有用键标记的项目都是"iText 7中的新项目",例如属性继承(这使我们能够以更好的方式应用CSS)。

完成后,您将看到显著的改进。

iTextpdfHTML模块已作为XmlWorker的替代品发布。C#版本可以从NuGet库下载。Java版本可以从Artifactory下载。

您要查找的主要类是HtmlConverter。它有很多静态方法重载,用于将html转换为将来添加到布局结构的元素列表、整个com.itextpdf.layout.Document实例或.pdf文件。

.html文件转换为xmlworker.jar0:的示例

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在构造函数中有三个参数:第一个参数用于指定是否使用标准字体(HelveticaCourieriText 7 core0等),第二个参数用于确定是否使用pdfHTML附带的字体,第三个参数用于规定是否加载系统字体。DefaultFontProvider只是FontProvider的一个子类,因此您可以在创建实例后始终调用addDirectoryaddFont

最新更新