我想在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”这样的短语中打印当前页码和总页码?
答案 0 :(得分:1)
为此目的有一个变量,您已经在使用它。实际上,用于显示当前页码的相同变量(即:$ V {PAGE_NUMBER})可用于显示总页数。唯一的区别是你应该改变评估时间。默认设置为“ NOW ”(因此第一个PAGE_NUMBER变量就可以了),而在第二个设置中,您应将其设置为“报告”。您应该以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>
结果将是:
答案 1 :(得分:0)
你可以做这样的事情来解决你的问题。
取两个字段
Field1应为$V{Page_Number}
设置评估时间属性。现在
Field2应为$V{Page_Number}
设置评估时间属性。报告
你的问题解决了......
答案 2 :(得分:0)
使用此:
<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>