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

使用fop 2.3版本时找不到FOP图像

蓝侯林
2023-03-14

我已经将FOP版本从fop 1.1升级到fop 2.3,但是

org.apache.fop.events。未找到LoggingEventListener processEvent Image。

以下是为升级而修改的代码片段。使用fop 2.3主控查看代码

法典:

  TransformerFactory factory = TransformerFactory.newInstance();
  Transformer transformer = factory.newTransformer();

  FOUserAgent foUserAgent = fopFactory.newFOUserAgent();

  //foUserAgent.setURIResolver( this.getURIResolver() );
  transformer.setURIResolver(this.getURIResolver());

  Fop fop = null;
  Source src = new StreamSource(new ByteArrayInputStream(foDoc));

  if (this.getContentType().equals("application/pdf"))
  {
    fop = fopFactory.newFop(MimeConstants.MIME_PDF, foUserAgent, os);
  }
  else if (this.getContentType().equals("application/postscript"))
  {
    fop = fopFactory.newFop(MimeConstants.MIME_POSTSCRIPT, foUserAgent, os);
  }

查看fop 2.3的代码

protected static final FopFactory fopFactory = FopFactory.newInstance(new File(".").toURI(), resolver);

XSLT 代码

<fo:external-graphic src = "stylesheets/Anthem_Join_In.bmp"/>

共有1个答案

陆子石
2023-03-14

解析器的API已更改,并且文档记录很差。此代码适用于我(fop 2.3)在JSF webApp中。

final ServletContext sc = (ServletContext) FacesContext.getCurrentInstance().getExternalContext().getContext();

// Create ServletContext resource Resolver
ResourceResolver resolver = new ResourceResolver() {
    @Override
    public Resource getResource(URI uri) throws IOException {
        return new Resource(sc.getResourceAsStream(uri.toASCIIString()));
    }

    @Override
    public OutputStream getOutputStream(URI uri) throws IOException {
        URL url = sc.getResource(uri.toASCIIString());
        return url.openConnection().getOutputStream();
    }
};

// Buid the factory
FopFactoryBuilder builder = new FopFactoryBuilder(new URI(sc.getContextPath()), resolver);
FopFactory FOP_FACTORY = builder.build();

我的项目中以前的代码的其余部分保持不变。我没有使用transformer.setURIResolver(…)

xml fop 代码如下所示:

<fo:external-graphic width="auto" content-width="164pt" height="auto" src="url(/resources/img/main-logo.png)"/>
 类似资料:
  • 我正在尝试使用带有xslt的外部图形来生成PDF。大多数图像都工作正常,但偶尔会有一张“找不到”,尽管可以在Web浏览器上查看。FOP吐出的错误如下: 这是我的外部图形部分: 知道我做错了什么吗? 编辑:看起来这个问题与服务器不允许访问自动请求有关。有没有办法在fop 2.1中设置用户代理的URIResolver?这一功能似乎存在于以前的版本中,但我似乎找不到一种在2.1中实现的方法。

  • 这就是我的症状: 我的python:3.7 64位os:ArchLinux

  • 我的 Apache FOP 应用程序有问题。 一切正常,直到我开始将外部文件(xsl、ttf、…)从外部工作目录打包到应用程序的jar文件中。从那以后,不再加载图像,我收到以下错误: 在 xsl 文件中,图像嵌入了: 当我将文件打包到jar中时,为什么图像不再工作?图像作为base64字符串嵌入到xsl文件中,因此图像数据必须可用... 谢谢:) 编辑1我正在用以下内容设置FopFactory基本

  • 问题内容: 在编译后运行程序时,出现以下错误: ./prog:/usr/lib/x86_64-linux-gnu/libstdc .so.6: 找不到版本GLIBCXX_3.4.19’(./prog要求)./prog:/ usr / lib / x86_64-linux-gnu / libstdc 。so.6:找不到版本“ GLIBCXX_3.4.20”(/ home / arman / lib

  • 问题内容: 为什么我得到这个? 我该如何解决? 问题答案: 重新安装JDK并在JDK上设置系统变量JAVA_HOME。(例如C:\ tools \ jdk7), 然后将JAVA_HOME变量添加到PATH系统变量中 在命令行输入 和 验证安装是否成功完成。

  • 在Google Cloud>Workloads中部署应用程序时,我在日志资源管理器中出错 找不到任何兼容的框架版本 找不到框架“Microsoft.NetCore.App”版本“3.1.0”。 找到了以下框架:5.0.4在[/usr/share/dotnet/shared/microsoft.netcore.app] 您可以通过安装指定的框架和/或SDK来解决此问题。 可在以下网址找到指定的框架: