Spring JasperReports图片位置

bkhjykvo  于 2023-04-04  发布在  Spring
关注(0)|答案(3)|浏览(156)

JasperReport要求(默认情况下)图像位于“WEB-INF/classes/”中。我想在PDF和普通JSP页面之间共享图像。我不想用垃圾图像文件弄乱类路径。如何强制JR使用不同的图像位置?

gr8qqesn

gr8qqesn1#

我建议创建以下报告参数:

  • ROOT_DIR -- "/reports/"
  • IMAGE_DIR -- $P{ROOT_DIR} + "images/"
  • STYLE_DIR -- $P{ROOT_DIR} + "styles/"
  • 子报告_DIR --$P{ROOT_DIR} + "subreports/"
  • COMMON_DIR -- $P{SUBREPORT_DIR} + "common/"

这允许images目录相对于ROOT_DIR路径。它还允许您动态更改ROOT_DIR。参数必须按其相对顺序声明。
在您的情况下,使用绝对路径:

  • ROOT_DIR -- "/home/user/"
  • IMAGE_DIR -- $P{ROOT_DIR} + "Pictures/"

请注意,在操作系统、目录结构、环境(例如,从JasperReports & JSF迁移到JasperReports Server)等之间进行更改,无需修改报告即可完成。(嗯,JasperReports Server需要进行一些修改。)

x6yk4ghg

x6yk4ghg2#

根据@Dave的建议,我将基目录拆分为一个Parameter,并给它一个默认值。这样我就可以指定绝对路径,classpath或url。下面是相关的代码片段:
控制器:
modelMap.put("ROOT_DIR", "/srv/images/");

  • 或者-
    modelMap.put("ROOT_DIR", "http://site.com/images/");
    jrxml文件:
<parameter name="ROOT_DIR" class="java.lang.String">
    <defaultValueExpression><![CDATA["/home/user/Pictures/"]]></defaultValueExpression>
</parameter>
...
<imageExpression class="java.lang.String">
   <![CDATA[$P{ROOT_DIR}+"leaf_banner_red.png"]]>
</imageExpression>
hgqdbh6s

hgqdbh6s3#

经过进一步检查,似乎我不能在任何地方为图像设置“位置”,但我确实发现您可以通过以下3种方式指定图像:

  • 类路径:“image.png”
  • 绝对:“/home/user/Pictures/image.png”
  • 网址:“https://encrypted.google.com/images/logos/ssl_ps_logo.png“

相关问题