如何使用Struts插件在Jasper Reports中显示图像

时间:2012-03-07 14:22:03

标签: image struts jasper-reports

我在Jasper 4.5.0中使用Struts 2.2.1和Jasper 2.2.1插件。并在jboss 5.1上运行我的webapp

我试图在报告的标题上显示我的logo.png,但我似乎无法显示它。

我尝试过在网上发布的各种解决方案。但似乎无法让它发挥作用。

在jrxml文件中我有:

   <imageExpression class="java.lang.String"><![CDATA[$P{LOGO_OPEN}"]]></imageExpression>

在我的动作课中,我有:

final String path ServletActionContext.getServletContext().getRealPath("/");
final String imageUrl = path + "images/graphics/header.png";
reportParams.put("LOGO_OPEN", imageUrl);

Struts.xml文件在其操作中具有以下参数:

<result name="success" type="jasper">
    <param name="location">/jasper/itineraryDetails.jasper</param>
    <param name="dataSource">itineraryDetailsList</param>
    <param name="format">PDF</param>
    <param name="reportParameters">reportParams</param>
    <param name="contentDisposition">attachment;filename="tripDetails.pdf"</param>
  </result>

提前致谢

1 个答案:

答案 0 :(得分:0)

您可以尝试做的不是将String传递到图像的路径,而是传入实际的Image。尝试将您的参数更改为:

<parameter name="LOGO_OPEN" class="java.lang.Object"/>

并将您的图片表达式设为:

<imageExpression><![CDATA[$P{LOGO_OPEN}]]></imageExpression>

并将您的操作类中的代码更新为:

final String path ServletActionContext.getServletContext().getRealPath("/");
final String imageUrl = path + "images/graphics/header.png";
ImageIcon image = new ImageIcon(imageUrl);
reportParams.put("LOGO_OPEN", image.getImage());