我一直坚持从外部资源访问图片。
我的结构如下,我有三个项目,后端,前端和一个共同的项目。后端和前端保存pdf生成的数据。这些数据将传递给公共数据并在那里产生。
现在我需要设置封面图片。该映像位于后端和前端的webApp目录下:
- webApp
|- ui-resources
|- pics
在java中我执行以下操作:
final FopFactory fopFactory = FopFactory.newInstance();
fopFactory.setBaseURL(StringUtils.stripStart(basePathUrl + PDF_BASE_PATH_EXTENSION, "/"));
final FOUserAgent foUserAgent = fopFactory.newFOUserAgent();
foUserAgent.setBaseURL(fopFactory.getBaseURL());
basePathUrl
变量是属性文件中给出的值,有类似的内容:http://127.0.0.1/8080
,常量PDF_BASE_PATH_EXTENSION
是:/ui-resources/pics
。
并在xsl文件中执行以下操作:
<fo:external-graphic src="url(pdfLogo.png)" content-width="60mm" content-height="30mm"/>
但那不起作用,我的想法是我可以像使用css的html一样访问xsl中的图像。
如果我&#34;硬编码&#34;它在xsl中是这样的:
<fo:external-graphic src="url('http://127.0.0.1:8080/ui-resources/pics/pdfLogo.png)" content-width="60mm" content-height="30mm"/>
然后我得到以下例外:
ERROR org.apache.fop.apps.FOUserAgent - Image not available. URI: http://127.0.0.1:8080/ui-resources/pics/pdfLogo.png. Reason: org.apache.xmlgraphics.image.loader.ImageException: The file format is not supported. No ImagePreloader found for http://127.0.0.1:8080/ui-resources/pics/pdfLogo.png (No context info available)
org.apache.xmlgraphics.image.loader.ImageException: The file format is not supported. No ImagePreloader found for http://127.0.0.1:8080/ui-resources/pics/pdfLogo.png
我可以通过此网址验证我是否可以访问该图像。
如果我将java代码中的basePathUrl更改为:
String basePathUrl = servletRequest.getRealPath("");
然后它在locale(eclipse)上运行,但不在服务器上运行,basePathUrl将是null
。
有人有想法吗?
提前致谢。