fop pdf 生成,带有很棒的字体图标

Man*_*ddy 5 java pdf-generation apache-fop

请帮帮我,我对 fop pdf 生成有两个疑问

  1. 如何在基于 FOP 的 pdf 生成中包含字体精美的图标或 utf 字符

  2. 根据值应用颜色。

请帮我

任何建议都被接受。

lfu*_*ini 4

您可以像使用其他字体一样使用Font Awesome :

  1. 在 FO 文件中,设置包含所需图标的 Unicode 实体的(或, ...)font-family属性fo:blockfo:inline
  2. 创建/编辑 FOP 配置文件以将font-family值映射到 Font Awesome 发行版中包含的 TrueType 字体文件
  3. 告诉 FOP 使用您的配置文件

至于颜色,您可以使用属性colorbackground-color来设置字形字体颜色和背景颜色。

使用 FOP 2.0 测试的示例:

FO片段

<fo:block>
    Icons:
    <fo:inline font-family="FontAwesome">
        &#xf13d; &#xf242; &#xf02d; &#xf27b;
    </fo:inline>
</fo:block>
<fo:block>
    Coloured icons:
    <fo:inline font-family="FontAwesome" color="#AA0000">
        &#xf13d; &#xf242; &#xf02d; &#xf27b;
    </fo:inline>
</fo:block>
<fo:block>
    Coloured icons with background:
    <fo:inline font-family="FontAwesome" color="#FFFFFF" background-color="#AA0000">
        &#xf13d; &#xf242; &#xf02d; &#xf27b;
    </fo:inline>
</fo:block>
Run Code Online (Sandbox Code Playgroud)

FOP配置片段:

<renderer mime="application/pdf">
  ...
  <fonts>
    <font embed-url="/Users/furini/font-awesome-4.4.0/fonts/fontawesome-webfont.ttf">
      <font-triplet name="FontAwesome" style="normal" weight="normal"/>
    </font>
    ...
  </fonts>
  ...
</renderer>
Run Code Online (Sandbox Code Playgroud)

输出:

PDF输出截图

请注意,您会收到一条警告,但无需担心(它只是告诉您 Font Awesome 没有默认连字符的字形,但无论如何您都不会在图标中使用连字符!):

25-ott-2015 13.31.38 org.apache.fop.fo.properties.CommonHyphenation getHyphChar
WARNING: Substituted specified hyphenation character (0x2d) with 0x20 because the font doesn't have the specified hyphenation character: FontAwesome,normal,400
Run Code Online (Sandbox Code Playgroud)

我的这个旧答案提供了有关字体配置和您可能收到的错误/警告的更多详细信息)

(披露:我是一名 FOP 开发人员,尽管现在不太活跃)