itext HTML в PDF с несколькими шрифтами - PullRequest
0 голосов
/ 09 мая 2019

Я использовал метод 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

1 Ответ

1 голос
/ 09 мая 2019

Шрифт, который в конечном итоге используется, выбирается механизмом выбора шрифта и зависит от ряда факторов.Если вы не указали имя семейства шрифтов для Cardo каким-либо образом явно в HTML, то ожидается, что по умолчанию используется 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);
...