itext html 转 pdf 不嵌入字体
itext html to pdf without embedding fonts
我正在按照 Chapter 6 of iText 7: Converting HTML to PDF with pdfHTML 中关于添加额外字体的指南进行操作:
public static final String FONT = "src/main/resources/fonts/cardo/Cardo-Regular.ttf";
public void createPdf(String src, String font, String dest) throws IOException {
ConverterProperties properties = new ConverterProperties();
FontProvider fontProvider = new DefaultFontProvider(false, false, false);
FontProgram fontProgram = FontProgramFactory.createFont(font);
fontProvider.addFont(fontProgram, "Winansi");
properties.setFontProvider(fontProvider);
HtmlConverter.convertToPdf(new File(src), new File(dest), properties);
}
虽然它按预期工作并嵌入了正在使用的字体子集,但我想知道是否有办法让生成的 PDF 文档完全不嵌入字体.这在创建 BaseFont
实例并将 embedded
属性 设置为 false
并使用它们构建各种 PDF 构建块时是可能的。我正在寻找的是使用 HtmlConverter.convertToPdf()
.
时的相同行为
你通常应该做的是覆盖 FontProvider
:
FontProvider fontProvider = new DefaultFontProvider(false, false, false) {
@Override
public boolean getDefaultEmbeddingFlag() {
return false;
}
};
但是,问题是目前这个字体提供程序将被 pdfHTML 覆盖,进一步进入 ProcessorContext#reset
的管道。
虽然此问题未在 iText 中修复,但您可以根据需要构建自定义版本的 pdfHTML。回购位于 https://github.com/itext/i7j-pdfhtml and you are interested in this 行。只需将其替换为上面的重载并构建 jar。
UPD 此修复从 pdfHTML 2.1.3 开始可用。从该版本开始,您可以自由使用自定义字体提供程序。
我正在按照 Chapter 6 of iText 7: Converting HTML to PDF with pdfHTML 中关于添加额外字体的指南进行操作:
public static final String FONT = "src/main/resources/fonts/cardo/Cardo-Regular.ttf";
public void createPdf(String src, String font, String dest) throws IOException {
ConverterProperties properties = new ConverterProperties();
FontProvider fontProvider = new DefaultFontProvider(false, false, false);
FontProgram fontProgram = FontProgramFactory.createFont(font);
fontProvider.addFont(fontProgram, "Winansi");
properties.setFontProvider(fontProvider);
HtmlConverter.convertToPdf(new File(src), new File(dest), properties);
}
虽然它按预期工作并嵌入了正在使用的字体子集,但我想知道是否有办法让生成的 PDF 文档完全不嵌入字体.这在创建 BaseFont
实例并将 embedded
属性 设置为 false
并使用它们构建各种 PDF 构建块时是可能的。我正在寻找的是使用 HtmlConverter.convertToPdf()
.
你通常应该做的是覆盖 FontProvider
:
FontProvider fontProvider = new DefaultFontProvider(false, false, false) {
@Override
public boolean getDefaultEmbeddingFlag() {
return false;
}
};
但是,问题是目前这个字体提供程序将被 pdfHTML 覆盖,进一步进入 ProcessorContext#reset
的管道。
虽然此问题未在 iText 中修复,但您可以根据需要构建自定义版本的 pdfHTML。回购位于 https://github.com/itext/i7j-pdfhtml and you are interested in this 行。只需将其替换为上面的重载并构建 jar。
UPD 此修复从 pdfHTML 2.1.3 开始可用。从该版本开始,您可以自由使用自定义字体提供程序。