当前位置: 首页 > 知识库问答 >
问题:

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

斜宁
2023-03-14

我使用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-pdfpdf

接下来,我需要在javaweb应用程序中执行同样的操作。应用程序是多模块Maven项目。

当我试图使用位于服务模块资源文件夹中的配置文件获取FopFactory实例时,我陷入了困境,这里是一个项目树

服务模块

src/main/resources

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);

共有1个答案

郑翰海
2023-03-14

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

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

这就是:

https://github.com/riskop/fop_test

另见此:

将FopFactoryBuilder BasURI设置为jar类路径

 类似资料:
  • 我正在使用Apache FOP将SVG渲染为PDF。这个SVG有一种特殊的字体,我也想在生成的PDF中使用。 我使用的配置文件如下所示: 我从示例配置中复制并粘贴了它,并编辑了所有不需要的渲染器。现在我尝试使用这样的配置: 这将呈现一个完美的PDF,但是没有使用字体。当我尝试cfg.getValue()时,我也会收到这条消息 文件/path/to/conf.xml:1:20中没有与配置元素“fop

  • 我有一个当地的库伯内特斯环境,我基本上是复制的。将kube/config文件添加到我的本地文件中,并将“上下文”、“用户”和“集群”信息添加到我当前的“.kube/config”文件中。没关系,我可以连接到本地文件。 但是我想用命令将这些信息添加到我的本地配置文件中。 因此,关于这个页面,我可以使用“证书颁发机构数据”作为参数,如下所示:--- 但它会抛出如上所述的错误。我用的是kubernete

  • 我正在将一些web应用程序从log4j1.12迁移到Log4j2。由于公司政策,我们的log4j。xml文件位置在应用服务器中配置为URL,应用程序必须使用JNDI获取它们。我们实现了一个,它允许我们以这种方式初始化log4j基础结构: 但是,随着log4j2api的更改,这将无法再使用。Log4j2提供了lo4j2web。jar模块,它使用初始化库。这将调用,负责获取配置文件的URI。 有什么方

  • 当我修改文件时,它会在启动后加载配置文件,否则不会重新加载文件。我的IDE是。 我的问题:

  • 问题内容: 我试图从文件选择器中选择图像文件后立即显示它。文件选择器仅限于.png和.jpg文件,所选文件存储在File类型的变量中。为此,我已经设置了ImageView,并且我希望使用此新文件设置图像,唯一的问题是文件类型不是图像。 如何做到这一点?到目前为止的代码… 问题答案: 您可以简单地用 然后将其放在: 其他构造函数提供了对加载图像所需资源的更多控制。如果要强制将图像设置为特定大小,则可

  • 我正在尝试将此文件加载到我的webview中,但它没有加载 文件路径类似于 /数据/用户/0/com。xyzapp。应用程序/缓存/临时文件。docx//这是GetPathh 下面是我的代码 第一项活动:- 第二项活动:- 如果我使用Action\u view 我因为“E/UncaughtException:android”而崩溃。操作系统。FileUriExposedException:file