gpt4 book ai didi

java - 如何将 Fop 配置文件加载到 FopFactory

转载 作者:搜寻专家 更新时间:2023-10-31 20:26:01 24 4
gpt4 key购买 nike

我正在使用 Fop-2.1 从 xml 和 xsl-fo 生成 PDF 文件,并根据 https://xmlgraphics.apache.org/fop/2.1/configuration.html 花了很多时间来配置 fop 配置文件(我使用的是西里尔字体)。

在命令行中测试它,它工作正常:

fop -c conf.xml -xml xml -xsl xsl -pdf pdf

接下来我需要在 Java Web 应用程序中做同样的事情。应用程序是多模块 Maven 项目。

当我尝试使用位于服务模块的资源文件夹中的配置文件获取 FopFactory 实例时,我卡住了,这是一个项目树

service-module

src/main/resources

conf/config.xml

网络模块

如何使用我的配置文件创建 FopFactory 实例?

首先我这样做了:

 FopFactory fopFactory = fopFactory = FopFactory.newInstance(
new File("/full/path/../resources/conf/config.xml"));

在这个项目中我们使用EJB容器,当然

An enterprise bean must not use the java.io package to attempt to access files and directories in the file system.

那我试试这个

    DefaultConfigurationBuilder cfgBuilder = new DefaultConfigurationBuilder();
Configuration cfg = null;
try {
cfg = cfgBuilder.build(getClass().getClassLoader().getResourceAsStream("conf/config.xml"));
} catch (Exception e) {
e.printStackTrace();
}
FopFactoryBuilder factoryBuilder = new FopFactoryBuilder(URI.create("/")).setConfiguration(cfg);
FopFactory fopFactory = factoryBuilder.build();

位于服务模块中的 PDF 生成应用程序。我需要在 baseURI 中设置什么?

fopFactoryBuilder = new FopFactoryBuilder(baseURI).setConfiguration(cfg);

最佳答案

我遇到了类似的问题并创建了一个工作演示

  • 使用 fop 2.2。
  • 从类路径加载所有内容(甚至是嵌入 pdf 的 ttf 字体)

这里是:

https://github.com/riskop/fop_test

另见:

Set FopFactoryBuilder baseURI to jar classpath

关于java - 如何将 Fop 配置文件加载到 FopFactory,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40400638/

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