iText 7核心中缺少xmlworker

时间:2016-06-02 09:30:14

标签: java itext itext7

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

xmlworker.jar显然iText 7 core不存在function initMap() { var map = new google.maps.Map(mapDiv, { center: {lat: 0, lng: 0}, zoom: 5, mapTypeId: 'roadmap' }); }

iText 7的替代品是什么?

任何解决方案?

2 个答案:

答案 0 :(得分: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)。

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

答案 1 :(得分:2)

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

您正在寻找的主要班级是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