【发布时间】:2011-11-08 17:51:13
【问题描述】:
我正在 iReport 中构建报告,以便可以从我的数据库数据生成 PDF。除了我的“描述”字段外,我还有多个图像,我想在细节带中显示它们。图片的数量取决于我为其生成 PDF 的确切报告。显示这些图像的最佳方法是什么?我希望他们用适当的标题将它们显示在另一个之下。文件名/位置与标题一起存储在“图片”表中。我想我需要一个子报告?
【问题讨论】:
我正在 iReport 中构建报告,以便可以从我的数据库数据生成 PDF。除了我的“描述”字段外,我还有多个图像,我想在细节带中显示它们。图片的数量取决于我为其生成 PDF 的确切报告。显示这些图像的最佳方法是什么?我希望他们用适当的标题将它们显示在另一个之下。文件名/位置与标题一起存储在“图片”表中。我想我需要一个子报告?
【问题讨论】:
您可以使用 imageExpression 属性来管理要显示的 WHAT 图片。例如:
<parameter name="whatImageToShow" class="java.lang.Integer" isForPrompting="true">
<defaultValueExpression><![CDATA[Integer.valueOf(1)]]></defaultValueExpression>
</parameter>
...
<image>
<reportElement x="0" y="296" width="270" height="65"/>
<imageExpression><![CDATA[$P{whatImageToShow}.intValue() == 0 ? "image1.jpg" : "image2.png"]]></imageExpression>
</image>
借助 printWhenExpression 属性,您可以管理何时您需要显示图像。例如:
<parameter name="toShowPicture" class="java.lang.Boolean" isForPrompting="true">
<defaultValueExpression><![CDATA[CDATA[Boolean.valueOf(false)]]></defaultValueExpression>
</parameter>
...
<image>
<reportElement x="0" y="296" width="270" height="65">
<printWhenExpression><![CDATA[$P{toShowPicture}.booleanValue()]]></printWhenExpression>
</reportElement>
<imageExpression><![CDATA[$P{whatImageToShow}.intValue() == 0 ? "image3.jpg" : "image4.png"]]></imageExpression>
</image>
文件名/位置与图片一起存储在“图片”表中 字幕。我想我需要一个子报告?
是的,您不能在一份报告中使用多个查询(数据源)。是的,您需要一个子报告。
您可以将数据从子报表返回到主数据。您可以在 $IREPORT_HOME$\ireport\samples\Subreports 文件夹中查看示例报告并阅读此case。
更新:
我刚刚发现文章 Creating jasper reports with dynamic images 很有用。可能对你有帮助。
【讨论】: