我想在Java中使用iText 7.想要将HTML/XHTML转换为PDF.
显然xmlworker.jar不存在iText 7 core.
什么是iText 7的替代品?
有解决方案吗
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).
完成后你会看到重大改进.
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