gpt4 book ai didi

java - 在 Apache FOP 中,如何以编程方式设置字体库,并且仍然加载 中的字体?

转载 作者:塔克拉玛干 更新时间:2023-11-02 19:40:22 24 4
gpt4 key购买 nike

我使用的是 Apache FOP 1.0。代码在不同的服务器上运行,因此我将字体放在每个服务器的实例根目录中。我的计划是以编程方式设置字体库(到服务器实例根目录,加上“/fonts/”),并在我的 fop 配置文件中,设置相对于该字体库的字体路径。下面是创建 FopFactory 的代码片段:

    private static final String FONT_BASE = System.getProperty("com.sun.aas.instanceRoot") + "/fonts/";

public FOPWrapperBean() throws Exception {
ClassLoader loader = this.getClass().getClassLoader();
InputStream fopStream = loader.getResourceAsStream("META-INF/fop.xconf");
logger.log(Level.FINE, "InputStream: {0}", fopStream.toString());
DefaultConfigurationBuilder cfgBuilder = new DefaultConfigurationBuilder();
Configuration cfg = cfgBuilder.build(fopStream);
this.fopFactory = FopFactory.newInstance();
this.fopFactory.setUserConfig(cfg);
fopFactory.getFontManager().setFontBaseURL("file://" + FONT_BASE);
logger.log(Level.FINE, "Font base url: {0}", fopFactory.getFontManager().getFontBaseURL());
fopStream.close();
}

fop.xconf 几乎完全是默认的。它包含

<base>.</base>

<fonts>
<directory>DejaVuTtf</directory>
</fonts>

({instance-root}/fonts/DejaVuTtf 中有几种字体,如果我只提供绝对路径,我可以正确加载它们——但这不适用于多个服务器,每个服务器可能有不同的实例根目录)。

如何加载具有以编程方式确定的路径的字体?

谢谢!

最佳答案

您的 Java 代码应该可以正常工作,因为 FONT_BASE 是在运行时确定的,取决于服务器 - 我们正在做与此非常相似的事情并且它工作正常。也许您的系统属性没有为您提供您认为的目录?

关于java - 在 Apache FOP 中,如何以编程方式设置字体库,并且仍然加载 <directory> 中的字体?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3729227/

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