【问题标题】:How to load Fop configuration file to FopFactory如何将 Fop 配置文件加载到 FopFactory
【发布时间】: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


【解决方案1】:

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

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

这里是:

https://github.com/riskop/fop_test

另见:

Set FopFactoryBuilder baseURI to jar classpath

【讨论】:

    猜你喜欢
    • 2015-06-01
    • 1970-01-01
    • 1970-01-01
    • 2018-02-17
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2022-11-24
    • 2020-07-22
    相关资源
    最近更新 更多