gpt4 book ai didi

apache-fop - 找不到带有 apache fop 1.0 的字体 Arial.ttf

转载 作者:行者123 更新时间:2023-12-03 18:43:11 26 4
gpt4 key购买 nike

我用:

  • Apache fop 1.0
  • Java

  • 我需要处理 unicode 高于 u0100 的特殊字符。我应该使用的目标字体是 Arial。由于我不能期望目标平台(例如 Linux)上存在 Arial,所以我在我的 jar 中嵌入了一个 Arial.ttf。
    我的实际配置文件如下所示:
    <fop ...>
    <!-- Base URL for resolving relative URLs -->
    <base>./</base>

    <!-- Font Base URL for resolving relative font URLs -->
    <font-base>./</font-base>

    <renderers>
    <renderer mime="application/pdf">
    <fonts>

    <font kerning="yes" embed-url="arial.ttf" encoding-mode="auto">
    <font-triplet name="Arial" style="normal" weight="normal"/>
    <font-triplet name="ArialMT" style="normal" weight="normal"/>
    </font>

    <!--<directory>C:/Windows/Fonts</directory>-->

    </fonts>
    <auto-detect/>
    </renderer>
    ...
    </fop>

    这样做我将我的配置文件加载到 fop 时出错:
    org.apache.fop.apps.FOPException: Failed to resolve font with embed-url 'arial.ttf'

    到目前为止,我设法让它工作的唯一方法是将文件夹路径硬编码到配置文件中:
                <font kerning="yes" embed-url="C:/myapp/arial.ttf" encoding-mode="auto">
    <font-triplet name="Arial" style="normal" weight="normal"/>
    <font-triplet name="ArialMT" style="normal" weight="normal"/>
    </font>

    但显然这不能成为解决方案!

    使用可以在 Windows 上工作的“目录”标签,只是因为你在那里有 Arial。但如上所述,它也必须在 Linux、Mac 等上运行。

    “自动检测”标签也不起作用(即使不在 Windows 上) - 也不是解决方案,因为我无法指望安装了 Arial 的目标平台。

    有什么建议可以解决这个问题吗?

    最佳答案

    我终于找到了答案。看:
    http://www.publicstaticfinal.de/2011/01/26/fop-embedding-fonts-from-classpath/

    解决方案是将自己的 URIResolver 添加到 fopFactory。

    关于apache-fop - 找不到带有 apache fop 1.0 的字体 Arial.ttf,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9736223/

    26 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com