这篇文章中描述了一个很好的解决方案:比较当前页码与最后一页码。我在下面的示例中使用了它。
简短的介绍
在摘要页面的帮助下,我们可以设置最后一页已经绘制的标志。
为了初始化这个标志,我们可以使用摘要带的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 of 2):
第二个(最后一页):
如果只有一页,结果将是:
在我的示例中,我将一个textField放在另一个之后。