2ページ目に画像を印刷したいとしましょう。
ページ 1 のコンテンツが多い場合、ページ 1 のコンテンツはページ 1 とページ 3 に分割されます。
ページ2はまだその画像です。
それはpdf生成で行うことができますか?
前もって感謝します。
2ページ目に画像を印刷したいとしましょう。
ページ 1 のコンテンツが多い場合、ページ 1 のコンテンツはページ 1 とページ 3 に分割されます。
ページ2はまだその画像です。
それはpdf生成で行うことができますか?
前もって感謝します。
はい、image要素のprintWhenExpressionプロパティを使用できます。
作業サンプル - 2 ページ目のみ画像を表示する条件を追加します。iReportでの私のレポート デザインは次のとおりです。
jrxml ファイルは次のとおりです。
<?xml version="1.0" encoding="UTF-8"?>
<jasperReport xmlns="http://jasperreports.sourceforge.net/jasperreports" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://jasperreports.sourceforge.net/jasperreports http://jasperreports.sourceforge.net/xsd/jasperreport.xsd" name="image_expression" language="groovy" pageWidth="595" pageHeight="842" columnWidth="555" leftMargin="20" rightMargin="20" topMargin="20" bottomMargin="20">
<queryString>
<![CDATA[select id from address]]>
</queryString>
<field name="ID" class="java.lang.Integer"/>
<title>
<band height="47" splitType="Stretch">
<image scaleImage="RetainShape">
<reportElement x="247" y="0" width="32" height="33"/>
<imageExpression><![CDATA["Number1.png"]]></imageExpression>
</image>
<staticText>
<reportElement x="147" y="13" width="100" height="20"/>
<textElement textAlignment="Center">
<font isBold="true" isItalic="true"/>
</textElement>
<text><![CDATA[Title]]></text>
</staticText>
</band>
</title>
<detail>
<band height="35" splitType="Stretch">
<textField>
<reportElement x="0" y="0" width="59" height="20"/>
<textElement/>
<textFieldExpression><![CDATA[$F{ID}]]></textFieldExpression>
</textField>
<image scaleImage="RetainShape">
<reportElement x="59" y="0" width="32" height="33">
<printWhenExpression><![CDATA[$V{PAGE_NUMBER}==2]]></printWhenExpression>
</reportElement>
<imageExpression><![CDATA["Number2.png"]]></imageExpression>
</image>
</band>
</detail>
<pageFooter>
<band height="34">
<image scaleImage="RetainShape">
<reportElement x="523" y="1" width="32" height="33">
<printWhenExpression><![CDATA[$V{PAGE_NUMBER}==2]]></printWhenExpression>
</reportElement>
<imageExpression><![CDATA["Number3.png"]]></imageExpression>
</image>
<textField>
<reportElement x="44" y="14" width="80" height="20"/>
<textElement textAlignment="Right"/>
<textFieldExpression><![CDATA["Page "+$V{PAGE_NUMBER}+" of"]]></textFieldExpression>
</textField>
<textField evaluationTime="Report">
<reportElement x="124" y="14" width="40" height="20"/>
<textElement/>
<textFieldExpression><![CDATA[" " + $V{PAGE_NUMBER}]]></textFieldExpression>
</textField>
</band>
</pageFooter>
</jasperReport>
結果は( iReportのプレビュー機能を介して)、レポートの最初のページは次のようになります。
そして2番目のページ:
最後の 3 ページ目:
アップデート:
ページの行数をカウントするための変数を追加し、この変数をprintWhenExpressionで使用できます。
たとえば、2 ページ目の 3 行目にのみ画像を表示する場合、テンプレートは次のようになります。
<?xml version="1.0" encoding="UTF-8"?>
<jasperReport ...>
...
<variable name="rowAtPage" class="java.lang.Integer" resetType="Page">
<variableExpression><![CDATA[$V{rowAtPage} + 1]]></variableExpression>
<initialValueExpression><![CDATA[0]]></initialValueExpression>
</variable>
...
<detail>
<band height="35" splitType="Stretch">
<textField>
<reportElement x="0" y="0" width="59" height="20"/>
<textElement/>
<textFieldExpression><![CDATA[$F{ID}]]></textFieldExpression>
</textField>
<image scaleImage="RetainShape">
<reportElement x="59" y="0" width="32" height="33">
<printWhenExpression><![CDATA[$V{PAGE_NUMBER} == 2 && $V{rowAtPage} == 3]]></printWhenExpression>
</reportElement>
<imageExpression><![CDATA["Number2.png"]]></imageExpression>
</image>
</band>
</detail>
...
</jasperReport>
結果は次のようになります。