飞碟不会从PDF中的googleapis字体css加载字体

时间:2018-06-08 01:58:35

标签: css pdf fonts flying-saucer

我不想在项目目录中下载字体。

对于网站,我从googleapis加载字体,这一切都很好。

现在,当我生成PDF时,我在样式中添加了font-face并且没有加载它们。

这是我的代码:

@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!

1 个答案:

答案 0 :(得分:0)

飞碟基于一个过时的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的加载项,可用于将HTML转换为PDF;有关详细信息,请参阅HTML to PDF tutorial。如果你转到本教程的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转换过程可能会很慢。这些字体是通过网络下载的,这通常会减慢速度。