【问题标题】:Flying saucer does not load font from googleapis font css in PDF飞碟不会从 PDF 中的 googleapis 字体 css 加载字体
【发布时间】:2018-11-18 00:35:27
【问题描述】:

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

对于我正在从 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!

【问题讨论】:

    标签: css pdf fonts flying-saucer


    【解决方案1】:

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

    飞碟使用的旧版 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 转换过程可能会变慢。字体是通过网络下载的,这通常会减慢速度。

    【讨论】:

      猜你喜欢
      • 2013-05-24
      • 2012-10-01
      • 2014-01-03
      • 2011-03-20
      • 2018-03-22
      • 1970-01-01
      • 2023-04-07
      • 2017-01-02
      • 1970-01-01
      相关资源
      最近更新 更多