Летающая тарелка не загружает шрифт из googleapis шрифта css в PDF

Я не хочу загружать шрифты в каталог моего проекта.

Для веб-сайта я загружаю шрифты из Googleapis, который работает все хорошо.

Теперь, когда я генерирую PDF, я добавил стиль шрифта и он не загружается.

Вот мой код:

@font-face {
  font-family: 'Hind Siliguri';
  src: url(https://fonts.gstatic.com/s/hindsiliguri/v4/ijwTs5juQtsyLLR5jN4cxBEoTI7ax8s3JimW3w.woff2);
  -fs-pdf-font-embed: embed;
  -fs-pdf-font-encoding: Identity-H;
}

Мой первый вопрос: летающая тарелка поддерживает только шрифты формата.ttf?

Как я могу управлять CSS с моими текущими шрифтами?

Требуется ли добавить fontResolver.addFont() в коде JAVA?

ТИА!

1 ответ

Решение

Летающая тарелка основана на устаревшей версии iText (фактически, версии, которая больше не должна использоваться в коммерческих приложениях). Само собой разумеется, что авторы iText не поддерживают Летающую тарелку.

Старая версия iText, используемая Flying Saucer, не поддерживает шрифты Web Open Font Format (WOFF). Поддержка таких шрифтов была представлена ​​только в iText 7. iText 7 поставляется с надстройкой pdfHTML, которая может использоваться для преобразования HTML в PDF; см. учебник HTML в PDF для получения дополнительной информации. Если вы перейдете к главе 6 этого руководства, вы найдете несколько примеров использования шрифтов WOFF.

Например, если у вас есть это в вашем файле CSS:

@font-face {
    font-family: "SourceSerifPro-Regular";
    src: url("fonts/SourceSerifPro-Regular.otf.woff") format("woff");
}
.regular {
    font-family: "SourceSerifPro-Regular";
}

Вы можете иметь следующий HTML:

<td class="regular">quick brown fox jumps over the lazy dog</td>

Это просто вопрос использования этого кода:

public void createPdf(String src, String dest) throws IOException {
    HtmlConverter.convertToPdf(new File(src), new File(dest));
}

И правильные шрифты будут загружены. Пожалуйста, примите во внимание, что процесс преобразования HTML в PDF рискует быть медленным при использовании этого подхода. Шрифты загружаются по сети, что обычно замедляет работу.

Другие вопросы по тегам