Java 在FOP中使用OutputStream渲染图像

Java 在FOP中使用OutputStream渲染图像,java,xsl-fo,apache-fop,Java,Xsl Fo,Apache Fop,我想在PDF上渲染图像,这将由FOP生成。要渲染图像,我将使用标记,如下所示: <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

我想在PDF上渲染图像,这将由FOP生成。要渲染图像,我将使用标记,如下所示:

<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并粘贴到URL中,那个么图像就会显示在浏览器中,并且我还发现当我生成PDF时,应该得到图像解密调用的请求映射并没有被调用

更新


另一个奇怪的想法是,如果web服务器是Tomcat,那么使用相同的代码成功生成PDF,但如果我在Glassfish上部署应用程序,则会出现错误。

在异常跟踪中:

ImageException:不支持该文件格式

FO似乎能够根据文件扩展名找到ImagePreload。如果找不到,它就坏了

我建议改变url的构建方式。应该有一个真正的图像文件名包括在内

因此,不是:

../offlinePaper/displayImage?disImg=4bec89f0-5b97-40c3-b7c9-ac555a664df8

试一试

../offlinePaper/displayImage/disImg4bec89f0-5b97-40c3-b7c9-ac555a664df8.jpg


我不能这样做。因为我有加密的图像,所以我必须先解密图像,这就是为什么我要这样做,请阅读更多@how about../offlinePaper/displayImage.jpg?disImg=4bec89f0-5b97-40c3-b7c9-ac555a664df8?我会在几分钟内尝试返回给您。不,仍然是我遇到的相同错误。我在controller/offlinePaper/displayImage.jpg requestMapping部分中放置了一个sysout,在这里图像被解密,但在控制台中看不到该sysout。这意味着FOP引擎也无法调用请求映射:如果您知道内容类型是什么,那么设置内容类型会怎么样?fo:external-graphic标记采用了一个具有预期mimetype的content-type属性。您只是更改了web服务器还是在代码中做了其他更改?这是我的问题@FernandoPrieto,不,我刚换了服务器。目前我通过编写URIResolver解决了这个问题。
<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>
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)