使用OutputStream在FOP中渲染图像
我想在PDF上渲染图像,这将由FOP生成。 要渲染图像我使用标签如下所示:
我也尝试通过提供完整的URL作为:
在控制器中我有一个请求映射(../offlinePaper/displayImage)
,它从getParameter
获取图像名称disImg
并解密图像并返回OutputStream
。
但是当我生成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服务器是Tomcat
,使用相同的代码PDF可以成功生成,但如果我在Glassfish
上部署应用程序则会出错。
在exception跟踪站中:
ImageException:不支持文件格式
FO似乎能够根据文件扩展名找到ImagePreloader
。 如果没有找到,它会中断。
我建议改变url的构建方式。 应该包含真实的图像文件名。
所以,而不是:
../offlinePaper/displayImage?disImg=4bec89f0-5b97-40c3-b7c9-ac555a664df8
尝试
../offlinePaper/displayImage/disImg4bec89f0-5b97-40c3-b7c9-ac555a664df8.jpg