Apache FOP:设置用于访问Web资源的基本路径网址

时间:2015-05-06 08:05:13

标签: java xslt apache-fop

我一直坚持从外部资源访问图片。

我的结构如下,我有三个项目,后端,前端和一个共同的项目。后端和前端保存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

有人有想法吗?

提前致谢。

0 个答案:

没有答案