itext html 转 pdf 多种字体

itext html to pdf with multiple fonts

我使用 addDirectory() 方法一次添加了两种 Cardo 字体:

public static final String FONTS = "src/main/resources/fonts/";
public void createPdf(String src, String fonts, String dest) throws IOException {
    ConverterProperties properties = new ConverterProperties();
    FontProvider fontProvider = new DefaultFontProvider();
    fontProvider.addDirectory(fonts);
    properties.setFontProvider(fontProvider);
    HtmlConverter.convertToPdf(new File(src), new File(dest), properties);
}

不幸的是,使用了 Times 字体而不是 Cardo 或 Cardo-Bold。 我也尝试过使用其他 Arial 字体,但它也不起作用

我正在使用 iText 7.1.6 和 pdfHTML 2.1.3

最终使用的字体是由字体选择机制选择的,取决于多种因素。如果您没有在 HTML 中以任何方式明确地将您的字体系列名称指定为 Cardo,那么默认使用 Times

如果您只想使用添加到 FontProvider 的字体,那么您应该使用另一个 DefaultFontProvider 的构造函数,因为默认构造函数添加了标准 PDF 字体和几种随附的字体pdfHTML.使用另一个构造函数允许您关闭在后台添加这些字体:

// Passing false three times means not loading standard PDF fonts, fonts shipped with pdfHTML and system fonts
FontProvider fontProvider = new DefaultFontProvider(false, false, false);
fontProvider.addDirectory(fonts);
properties.setFontProvider(fontProvider);