iText 7核心中缺少xmlworker

Kin*_*ung 6 java itext itext7

我想在Java中使用iText 7.想要将HTML/XHTML转换为PDF.

显然xmlworker.jar不存在iText 7 core.

什么是iText 7的替代品?

有解决方案吗

Bru*_*gie 5

XML Worker是iText路线图上的下一个东西,所以是的,它可用于iText 7.但首先我们需要完成iText 7 for Java端口到iText 7 for C#,我们仍然在努力记录iText 7.例如:iText 7:Building Blocks.

在开源中,一个经常发布,一个很快发布.而不是保持所有代码关闭,直到一切都完成后,我们选择了释放的开源方式:无论是准备好了,得到释放.无论什么都没有准备好,它将在准备好后立即发布.

iText的重大改革要求我们重写XML Worker.好处:iText 7是用XML Worker编写的.我在上面提到的教程中用键标记的所有项都是"iText 7中的新内容",例如属性的继承(这允许我们以更好的方式应用CSS).

完成后你会看到重大改进.


Ale*_*ach 5

iTextpdfHTML模块已作为XmlWorker. C# 版本可以从NuGet Gallery下载。Java 版本可以从Artifactory下载。

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

.html将文件转换为的示例.pdf

HtmlConverter.convertToPdf(new File(htmlFilePath), new File(outPdfFilePath));
Run Code Online (Sandbox Code Playgroud)

将 html 转换为布局元素的示例:

String html = "<p>Hello world!</p>";
List<IElement> lst = HtmlConverter.convertToElements(html);
Run Code Online (Sandbox Code Playgroud)

另外,pdfHTML现在支持@media规则,因此您可能需要提供一个用于应用 CSS 的配置,例如要使用@media print指令,您需要进行MediaDeviceDescription相应的设置:

ConverterProperties properties = new ConverterProperties()
     .setMediaDeviceDescription(new MediaDeviceDescription(MediaType.PRINT));
HtmlConverter.convertToPdf(new File(htmlPath), new File(outPdfPath), properties);
Run Code Online (Sandbox Code Playgroud)

要指定将 HTML 转换为 PDF 时要使用的字体集,您还可以设置FontProvider

FontProvider fontProvider = new FontProvider();
fontProvider.addDirectory(fontsDir)
properties.setFontProvider(fontProvider);
Run Code Online (Sandbox Code Playgroud)

或者您可以使用DefaultFontProvider并在构造函数中指定其设置:

FontProvider fontProvider = new DefaultFontProvider(false, false, true);
properties.setFontProvider(fontProvider);
Run Code Online (Sandbox Code Playgroud)

DefaultFontProvider构造函数中有三个参数:第一个参数指定是否使用标准字体(Helvetica、等),第二个参数指定是否使用自带字体,第三个Courier参数指定是否加载系统字体。只是 的子类,因此您始终可以在创建实例后调用或。TimespdfHTMLDefaultFontProviderFontProvideraddDirectoryaddFont