我想将 Jasper Reports 报告页脚中的当前页码和总页码打印为“第 2 页,共 10 页”之类的短语。该短语必须位于页边距中间。文本模式取决于区域设置。
自然的方法是使用消息模式来进行格式化和翻译,例如 msg($R{msg_page_number}, $V{PAGE_NUMBER}, $V{TOTAL_PAGE_NUMBERS})。这是不可能的,因为没有像 TOTAL_PAGE_NUMBERS 这样的变量。人们必须在报告布局的不同时间评估 PAGE_NUMBER 变量。因此,必须使用多个文本元素来打印该行。这使得居中变得非常困难,因为没有任何文本元素实际上位于页面的中心。
有没有办法在页面上水平居中打印诸如“$R{page} X $R{of} Y”之类的短语中的当前页码和总页码?
用这个:
<textField evaluationTime="Master">
<reportElement x="4" y="9" width="546" height="22" uuid="b2d67140-3666-4968-8b46-89672b6fb6d5"/>
<textElement textAlignment="Right"/>
<textFieldExpression><![CDATA["Page " + $V{MASTER_CURRENT_PAGE} + " of " + $V{MASTER_TOTAL_PAGES}]]></textFieldExpression>
</textField>
Run Code Online (Sandbox Code Playgroud)
有一个用于此目的的变量,并且您已经在使用它。事实上,用于显示当前页码的同一变量(即: $V{PAGE_NUMBER} )也可用于显示总页数。唯一的区别是您应该更改评估时间。默认设置为“ NOW ”(因此第一个 PAGE_NUMBER 变量可以),而在第二个变量上,您应该将其设置为“ REPORT ”。您应该以如下所示的 textField 组件结束:
<textField evaluationTime="Report">
<reportElement uuid="b3d3c256-49ad-492b-8f6e-37ac3a3f2d61" style="Column header" x="678" y="0" width="40" height="13" forecolor="#FFFFFF"/>
<textElement verticalAlignment="Middle">
<font fontName="SansSerif" size="10" isBold="false"/>
</textElement>
<textFieldExpression><![CDATA[" " + $V{PAGE_NUMBER}]]></textFieldExpression>
</textField>
Run Code Online (Sandbox Code Playgroud)
结果将是:

| 归档时间: |
|
| 查看次数: |
15806 次 |
| 最近记录: |