良い解決策は、この投稿で説明されています:現在のページ番号を最後のページ番号と比較します。以下のサンプルで使用しました。
簡単な説明
概要ページの助けを借りて、最後のページが既に描画されているというフラグを設定できます。
このフラグを初期化するには、SummaryバンドのprintWhenExpressionを使用できます。
標本、見本
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="last_page_on_page_footer" language="groovy" pageWidth="595" pageHeight="842" columnWidth="555" leftMargin="20" rightMargin="20" topMargin="20" bottomMargin="20" uuid="37b03978-a847-40ab-bd19-40bd48de326d">
<queryString>
<![CDATA[SELECT TASK FROM TASKS]]>
</queryString>
<field name="TASK" class="java.lang.String"/>
<detail>
<band height="50" splitType="Stretch">
<textField>
<reportElement uuid="bec3ccda-ea30-49fa-a0ad-5bb74a2187a5" x="0" y="0" width="100" height="20"/>
<textElement/>
<textFieldExpression><![CDATA[$F{TASK}]]></textFieldExpression>
</textField>
</band>
</detail>
<pageFooter>
<band height="54" splitType="Stretch">
<textField evaluationTime="Report">
<reportElement uuid="5e4bb895-fd64-4627-bd35-ca1ed71f8dc1" x="455" y="0" width="100" height="20">
<printWhenExpression><![CDATA[!$P{REPORT_PARAMETERS_MAP}.containsKey("LastPageNumber")]]></printWhenExpression>
</reportElement>
<textElement/>
<textFieldExpression><![CDATA["initials: ___________"]]></textFieldExpression>
</textField>
<textField>
<reportElement uuid="788fbc43-92cc-4540-abeb-8fa9bf48d25c" x="0" y="0" width="80" height="20"/>
<textElement textAlignment="Right"/>
<textFieldExpression><![CDATA["Page "+$V{PAGE_NUMBER}+" of"]]></textFieldExpression>
</textField>
<textField evaluationTime="Report">
<reportElement uuid="95286826-b864-46f8-9922-fc0e2f023ba5" x="80" y="0" width="40" height="20"/>
<textElement/>
<textFieldExpression><![CDATA[" " + $V{PAGE_NUMBER}]]></textFieldExpression>
</textField>
<textField evaluationTime="Report">
<reportElement uuid="25ccab25-ccd2-4187-8a9b-dff54276042e" x="455" y="0" width="100" height="20">
<printWhenExpression><![CDATA[$P{REPORT_PARAMETERS_MAP}.containsKey("LastPageNumber")]]></printWhenExpression>
</reportElement>
<textElement/>
<textFieldExpression><![CDATA["Signature: ___ "]]></textFieldExpression>
</textField>
</band>
</pageFooter>
<summary>
<band height="20">
<printWhenExpression><![CDATA[new Boolean(($P{REPORT_PARAMETERS_MAP}.put(
"LastPageNumber",$V{PAGE_NUMBER}).equals("dummyPrintWhen")) ||
Boolean.TRUE)]]></printWhenExpression>
</band>
</summary>
</jasperReport>
レポートのデザイン ( iReport内):

結果は次のようになります。最初のページ (1/2):

そして2番目(最後のページ):

1 ページのみの場合、結果は次のようになります。

私のサンプルでは、一方のtextFieldをもう一方の後ろに配置しました。