飞碟无法从 PDF 中的 googleapis 字体 css 加载字体

Flying saucer does not load font from googleapis font css in 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?

是否需要在JAVA代码中添加fontResolver.addFont()?

TIA!

飞碟基于 iText 的过时版本(实际上,a version that should no longer be used in commercial applications)。不用说,iText 的作者不认可 Flying Saucer。

Flying Saucer 使用的旧版 iText 不支持 Web Open Font Format (WOFF) 字体。仅在 iText 7 中引入了对此类字体的支持。iText 7 附带了一个名为本教程的插件 pdfHTML that can be used to convert HTML to PDF; see the HTML to PDF tutorial for more info. If you go to chapter 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 的转换过程可能会很慢。字体是通过网络下载的,这通常会降低速度。