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

在FOP中使用OutputStream渲染图像

齐意致
2023-03-14

我想在PDF上渲染图像,这将由FOP生成。为了渲染图像,我使用了标签< code >

<fo:external-graphic src="url('../offlinePaper/displayImage?disImg=4bec89f0-5b97-40c3-b7c9-ac555a664df8')" inline-progression-dimension.maximum="100%"  content-height="scale-down-to-fit" content-width="scale-down-to-fit"> </fo:external-graphic>

我还尝试将完整的URL设置为:

<fo:external-graphic src="http://10.2.10.79/Web/offlinePaper/displayImage?disImg=e391d672-ebf4-44d8-86cb-2cf987a50bf7" inline-progression-dimension.maximum="100%"  content-height="scale-down-to-fit" content-width="scale-down-to-fit"> </fo:external-graphic>

在控制器中,我有一个请求映射(../offlinePaper/displayImage),该映射从getParameter中获取图像名称

但是当我生成PDF时,我发现日志文件中的错误为:

Image not available. URI: http://10.2.10.79:80/Web/offlinePaper/displayImage?disImg=4bec89f0-5b97-40c3-b7c9-ac555a664df8. Reason: org.apache.xmlgraphics.image.loader.ImageException: The file format is not supported. No ImagePreloader found for http://10.2.10.79:80/Web/offlinePaper/displayImage?disImg=4bec89f0-5b97-40c3-b7c9-ac555a664df8 (No context info available)

但是,如果我复制这个URL并粘贴到URL中,那么图像会显示在浏览器中,我还发现,当我生成PDF时,应该调用图像解密的请求映射没有被调用。

更新

另外一个奇怪的想法是,我发现如果web服务器是< code>Tomcat的话,用同样的代码可以成功地生成PDF,但是如果我在< code>Glassfish上部署应用程序,就会出错。

共有1个答案

丁钟展
2023-03-14

在异常跟踪中:

图像异常:不支持文件格式

FO似乎可以根据文件扩展名找到< code>ImagePreloader。如果找不到,它就崩溃了。

我建议改变构建url的方式。应该包含一个真实的图像文件名。

因此,而不是:

../offlinePaper/displayImage?disImg = 4 bec 89 f 0-5b 97-40c 3-b7c 9-AC 555 a 664 df 8

尝试

../offline paper/display image/disimg 4 bec 89 f 0-5b 97-40c 3-b7c 9-AC 555 a 664 df 8 . jpg

 类似资料:
  • 我写了一个< code>OpenGL代码用于在屏幕上渲染图像。我使用< code>GLUT来创建一个窗口和回调,但是我想在< code>win32窗口中而不是在< code>GLUT中呈现图像,基本上我们有一个< code > CreateWindowEx() API来在< code>win32中创建窗口,并且我们有一个< code>HWND(句柄),以便我们可以将此句柄传递给< code>HDC

  • 问题内容: 我有一些记录。单击每条记录后,需要在手风琴中显示信息。 该信息应该从数据库动态获取。 到目前为止,我所做的是 创建局部视图。那是为了显示详细信息。 在记录上单击后,我调用jquery方法并在控制器上执行我的方法。控制器以Json的形式返回对象(或任何其他东西,打开以获取任何建议)。 现在,JQuery方法具有该(模型)对象,但是如何使用它来呈现其局部视图。 问题答案: 我有一些记录。单

  • 问题内容: 如何使用jquery渲染局部视图? 我们可以这样渲染部分视图: 我们如何使用jquery做同样的事情? 问题答案: 我已经使用ajax加载来做到这一点:

  • 我试图使用IntelliJ的PlantUML插件创建一个组件图。我已经安装了插件,并与它合作过。然而,当我试图呈现一个组件图时,我得到一个错误: 找不到Graphviz 我还检查了其他图表,时序图仍然工作得很好。 这里的问题是什么?

  • 渲染某个变量 假定我们定义了一个变量:  <script> export default { data () { return { my_value: '默认值', } }, } </script> 我们就可以这样来显示它:  <div>{{my_value}}</div> 方法的声明和调用 声明一个方法: show_my_value <script> ex