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

gue*_*who 5 java configuration uri ejb apache-fop

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

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

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

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

我试图通过位于服务模块的资源文件夹中的配置文件获取FopFactory实例时遇到困难,这里是项目树

服务模块

的src/main /资源

的conf/config.xml中

网络模块

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

首先我这样做了:

 FopFactory fopFactory = fopFactory = FopFactory.newInstance(
            new File("/full/path/../resources/conf/config.xml"));
Run Code Online (Sandbox Code Playgroud)

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

企业bean不得使用java.io包来尝试访问文件系统中的文件和目录.

然后我正在尝试这个

    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();
Run Code Online (Sandbox Code Playgroud)

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

fopFactoryBuilder = new FopFactoryBuilder(baseURI).setConfiguration(cfg);
Run Code Online (Sandbox Code Playgroud)

ris*_*kop 4

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

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

这里是:

https://github.com/riskop/fop_test

另请参阅此:

将 FopFactoryBuilder baseURI 设置为 jar 类路径