当前位置: 首页 > 知识库问答 >
问题:

Apache FOP 2.2使用相对路径包含字体

樊浩初
2023-03-14

我正在设置fop。xconf并配置哪些字体可用于Apache FOP,并希望使用相对路径而不是绝对路径:

<fop version="1.0">

    <strict-configuration>true</strict-configuration>
    <strict-validation>true</strict-validation>
    <base>./</base>
    <font-base>./</font-base>
    <source-resolution>72</source-resolution>
    <target-resolution>72</target-resolution>
    <default-page-settings height="11in" width="8.26in"/>

    <hyphenation-pattern lang="en" country="ZA">en_ZA</hyphenation-pattern>

    <renderers>
        <renderer mime="application/pdf">
        <fonts>
            <directory recursive="true">/Users/me/Code/company/project/src/main/resources/templates/fonts</directory>
            <substitutions>
                <substitution>
                    <from font-family="Helvetica" />
                    <to font-family="OpenSans" />
                </substitution>
            </substitutions>
        </fonts>
        </renderer>
   </renderers>    
</fop>

有没有可能将渲染器中字体目录设置为使用相对路径?

或者可以以编程方式设置它,在这种情况下,我可以利用

this::class.java.getResource("/templates/fonts/MyFont.ttf")

获取完整路径?

2017-10-24 05:24:48,591 WARN  org.apache.fop.apps.FOUserAgent - The font directory ./fonts could not be found.
2017-10-24 05:24:48,591 WARN  org.apache.fop.apps.FOUserAgent - The font directory ./templates/fonts could not be found.
2017-10-24 05:24:48,591 WARN  org.apache.fop.apps.FOUserAgent - The font directory ./resources/templates/fonts could not be found.

共有3个答案

越琦
2023-03-14

将URL=(/用户/我/代码/公司/项目/src/主/资源/模板/字体)放在

你解决了问题!;)

柴衡
2023-03-14

我想说,FOP配置文档中的这个脚注是最有帮助的。

https://xmlgraphics.apache.org/fop/trunk/configuration.html#fnref: 1

它指出配置中的所有相对路径都将解析为

基本上,有两种方法可以正确解析字体目录并被 FOP 找到。

>

  • 您可以以编程方式设置

    // This would be in the PHP script.
    chdir("/var/www/html/site");
    exec("$path_to_fop -c $path_to_fop_xconf ...");
    
    // This would be how the <directory> element in fop.xconf would be written.
    // Since the current working directory is changed with chdir(), this should
    // resolve to /var/www/html/site/libraries/fop/fonts.
    <directory recursive="true">./libraries/fop/fonts</directory>
    

  • 包建义
    2023-03-14

    虽然这是一个旧线程,但我可能会补充,即使在FOP 2.3中,问题仍然存在。您可能会发现此FOP Bug很有用:

    • 字体库已从配置中删除(不在文档中)
    • 使用绝对路径
     类似资料:
    • 问题内容: 我有/root/update/test.php文件。还有一个文件/root/connect.php; 该文件有一行 在/root/update/test.php中。有代码 当我运行/root/update/test.php时,它找到connect.php,但是找不到config.php,这给了我 这让我感到困惑,因为这些警告使我似乎似乎在正确地进行所有操作-包含路径为/ root,并且

    • 问题内容: Popen的文档提到您不能指定相对于“更改工作目录” kwarg的可执行路径。 如果不是None,则子目录的当前目录将在执行之前更改为 。 请注意,搜索可执行文件时不会考​​虑此目录,因此您无法指定程序相对于的路径。 但是python在我的系统上的行为似乎与这种说法直接矛盾: 是否在使用相对路径来依赖于平台且不应依赖的东西?还是这是一个文档错误? (从评论这个问题产卵由glglgl这里

    • 我目前正在制作一个与phpBB论坛融合的网站。根据phpBB3会话集成的官方解决方案,我使用了以下代码来包含phpBB安装中的相关文件: 我的论坛文件夹是(根路径)/forums/但是,如果我尝试包含另一个文件夹中的代码,它会抛出以下错误: [phpBB Debug] PHP警告:在文件/home/unrealsp/public _ html/includes/phpBB . PHP第5行:inc

    • 本文向大家介绍Linux 相对路径和绝对路径的使用,包括了Linux 相对路径和绝对路径的使用的使用技巧和注意事项,需要的朋友参考一下 01. 概述 绝对路径和相对路径在shell环境中经常遇到,各有用处。有时候相对路径比较方便,有时候绝对路径比较方便。 02. 绝对路径(Absolute Pathname) 绝对路径必定由**/**开头 绝对路径是为档案/文件的所在位置做指向 在任何时候,都可以

    • 问题内容: 如果使用绝对路径,则无法将整个目录移动到新位置。如果使用相对路径,则无法将单个文件移动到新位置。 这里有什么解决方案?您是否设置了一个包含根路径并从那里开始的配置文件?还是您有类似的规则:永不移动文件? 我在某些项目中看到人们使用dirname( FILE )。我的意思是,为什么不简单地将其删除,因为目录名还是相对的(取决于文件所在的位置)? 问题答案: 您应该使用一个配置文件,该配置

    • 我是Java新手,正在尝试构建一个FX应用程序。我的一个函数旨在用其他字符串替换某些字符串。只要我定义了目标文件的绝对路径,脚本就可以正常工作,但当我使用相对路径时,脚本就会中断。 问题出在方法“ReadAllBytes”中,该方法只适用于完整路径。但是我需要相对路径,因为文件夹位置会有所不同。 目标文件位于项目文件夹中。是否有其他方法可以用来读取文件内容,而不需要绝对路径? 提前多谢。下面是代码