6

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

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

iText 7 的替代品是什么?

有什么解决办法吗?

4

2 回答 2

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)。

完成后,您会看到显着的改进。

于 2016-06-24T06:06:03.303 回答
4

iTextpdfHTML模块已作为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);

要指定在将 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构造函数中有三个参数:第一个是指定是否使用标准字体(HelveticaCourierTimes),第二个是指定是否使用自带的字体,pdfHTML第三个是指定是否加载系统字体。DefaultFontProvider只是一个子类,FontProvider因此您可以随时调用addDirectoryaddFont在创建实例之后调用。

于 2017-02-21T18:25:31.380 回答