Jasper Reports:中心当前页码和总页码

时间:2015-04-16 08:40:10

标签: jasper-reports

我想在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”这样的短语中打印当前页码和总页码?

3 个答案:

答案 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>

结果将是:
enter image description here

答案 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>
相关问题