Apache FOP:无法加载和使用自定义字体

时间:2016-08-21 23:24:39

标签: java apache fonts xsl-fo apache-fop

我想使用自定义字体(Vito-Regular.otf)来生成java程序中生成的pdf文档 - 使用Apache FOP 2.1。

网上发现的大多数样本都是指FOP 1.0和.ttf字体。所以这对我有帮助。

我的FOP用户配置:



<?xml version="1.0"?>
<fop version="1.0">
  <renderers>
    <renderer mime="application/pdf">
      <fonts>
        <font embed-url="file:C://Windows//Fonts//Vito-Regular.otf" kerning="yes" >
          <font-triplet name="Vito" style="normal" weight="normal" />
        </font>
      </fonts>
    </renderer>
  </renderers>
&#13;
&#13;
&#13;

在模板中使用:

&#13;
&#13;
    <fo:block-container font-size="9pt" font-family="Vito">
&#13;
&#13;
&#13;

将导致使用默认字体(任何)但不使用(对于我预期的)Vito字体:

WARNUNG: Font "Vito,normal,400" not found. Substituting with "any,normal,400".

所以这是我对这个问题的主要问题:

  1. 有没有办法在Apache FOP 2.1中检查/读取加载的字体?
  2. Vito,normal,400&#39;的组合是什么?相当于名字,风格,重量?
  3. 字体的配置是否正确设置?甚至不是我监督的内容?
  4. 模板中引用的字体是否正确?
  5. 有没有办法检查字体是否与Apache FOP兼容?
  6. 对这些问题的任何帮助表示赞赏。

2 个答案:

答案 0 :(得分:0)

我的fop.xml就像这样

<select ng-model="$storage.selectedlanguage.language">
    <option ng-repeat="lang in languages" value="{{lang.language}}">
      {{lang.text}}
    </option>
</select>

和我的<renderers> <renderer mime="application/pdf"> <fonts> <font embed-url="MSMINCHO.TTF" kerning="yes" sub-font="MS Mincho"> <font-triplet name="MS Mincho" style="normal" weight="normal"/> <font-triplet name="MS Mincho" style="normal" weight="bold"/> </font> </fonts> </renderer> 文件与我的TTF文件位于同一目录中。

因此,您可能错过了xml标记,或者文件位置和/或文件类型存在问题。

答案 1 :(得分:0)

它在Windows下接缝了URI问题(在OSX上没有问题)。我已经通过一些解决方法解决了这个问题。

我的Java代码是标准

String filename = "xfop.xml";
FopFactory fopFactory = FopFactory.newInstance(new File (filename));

第一

<font-base>\\<computername>\C$\Windows\Fonts</font-base>

第二,请注意,本地主机不起作用,

<font-base>\\127.0.0.1\Windows\fonts</font-base>

第三,我复制所需的字体(这是我的生产解决方案)

<font-base>\\<server>\<share>\fonts</font-base>