我使用Fop-2.1从xml和xsl-fo生成PDF文件并花费大量时间配置fop配置文件(我使用西里尔字体),根据{{3} }
在命令行中测试它,它工作正常:
fop -c conf.xml -xml xml -xsl xsl -pdf pdf
接下来我需要在java web应用程序中做同样的事情。应用程序是多模块Maven项目。
我试图通过位于服务模块资源文件夹中的配置文件获取FopFactory实例时遇到困难,这里是项目树
服务模块
的src /主/资源
CONF / config.xml中
网络的模块
如何使用我的配置文件创建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);
答案 0 :(得分:1)
我遇到了类似的问题并创建了一个工作演示
这是:
https://github.com/riskop/fop_test
另见: