使用 java iText 8.0.4 通过 Conformance PDFUA 将 HTML 转换为 PDF 时出现字体未嵌入错误

问题描述 投票:0回答:1

com.itextpdf.pdfua.exceptions.PDFUAConformanceException:未嵌入以下字体:Times-Roman

当我尝试使用 PdfUADocument 类创建文档对象时出现上述异常。如果文档对象是使用 PdfDocument 创建的并且未设置一致性,则不会有问题。 有人可以帮忙吗

使用 itext 8.0.4 版本将 HTML 转换为 PDF 但出现上述错误

java itext standards-compliance pdf-conversion
1个回答
0
投票

问题是,PDFUA 规范要求您嵌入 PDF 正在使用的所有字体。

因此,要在 html2pdf 中实现此功能,您应该将 FontProvider 配置为仅使用作为字体文件提供的字体。

这样的事情应该可以解决问题

    ConverterProperties converterProperties = new ConverterProperties();
    FontProvider fontProvider = new DefaultFontProvider(false, true, false);
    converterProperties.setFontProvider(fontProvider);
    HtmlConverter.convertToPdf(new FileInputStream(sourceHtml), pdfDocument, converterProperties);

DefaultFontProvider
构造函数中,第一个 false 表示:不注册 StandardPdfFonts,这些字体是每个 pdfProcesser 都应该可用的字体,但它们没有嵌入,因此我们需要将其关闭。第二个参数为 true,因为这将加载嵌入到库本身中的字体。 最后一个错误是禁用加载电脑上可用的字体。

当然,如果您使用自定义字体,您可以使用

fontProvider.addFont()
方法将它们添加到字体提供程序。

如果这不能解决问题,请提供更多详细信息。

© www.soinside.com 2019 - 2024. All rights reserved.