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



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

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

-c conf.xml -xml XML -xsl XSL -pdf pdf

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

当我试图获得FopFactory实例时,我的配置文件位于服务模块的资源文件夹中,这里是一个项目树

服务模块

src/main/资源
配置/config . xml

web模块

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

首先我这样做:

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

在这个项目中我们使用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();

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

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

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

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

在这里:

https://github.com/riskop/fop_test

参见this:

将FopFactoryBuilder baseURI设置为jar类路径

最新更新