【发布时间】:2017-03-16 23:41:02
【问题描述】:
我正在使用 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"));
在这个项目中我们使用 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);
【问题讨论】:
-
你有没有找到正确的方法?
-
必须使用以前版本的 fop 1。**
标签: java configuration ejb uri apache-fop