jasper-reports

Jasper Reports Show "Page X of Y" using a single text field


I would like to create one text field that contains Page X of Y, without splitting it in two parts, as per the common solution. My textfield contains "Page " + $V{currentPage} + " of " + $V{PAGE_NUMBER}" with evaluationTime=auto.

Let's say I have a report with 10 pages. Three are the Title Band, six are Detail Band and one is the Summary Band. My results show "Page 0 of 10" for the Title Bands, correct counts for the Detail Bands, then "Page 0 of 10" for the Summary Bands.

How do you ensure the variable is calculated everywhere, not only on Detail Band?


Solution

  • Jaspersoft Studio, 6+

    For Jaspersoft Studio v6, or if the first page number is duplicated, try this solution, which uses $V{MASTER_CURRENT_PAGE} and $V{MASTER_TOTAL_PAGE} with an evaluation time of Master.

    Jaspersoft Studio

    For other versions of Jaspersoft Studio, try the steps outlined in the subsequent subsections.

    Create Variable

    Create a variable as follows:

    1. Create a variable called V_CURRENT_PAGE_NUMBER
    2. Select the variable to open its properties (illustrated below)
    3. Set Expression to: 1
    4. Set Initial Value Expression to: $V{PAGE_NUMBER}
    1. Set Reset type to: Page

    These settings are illustrated in the following figure:

    Current Page Number Variable

    Setting the Expression to 1 prevents its value from being null. That is, if the footer shows Page null of 4 it probably means that the Expression hasn't been set.

    The variable is created.

    Add Page Footer

    Add a Page Footer band as follows:

    1. Select the report in the outline panel
    2. Check Summary With Page Header And Footer to ensure the page footer appears on the summary page.
    3. Add a Page Footer band.

    The footer is added.

    Create Text Field

    Create a text field as follows:

    1. Drag and drop a single text field onto the Page Footer band.
    2. Select the text field.
    3. Set Expression to: msg("Page {0} of {1}", $V{V_CURRENT_PAGE_NUMBER}, $V{PAGE_NUMBER})
    4. Set Evalutation Time to: Auto

    These settings are illustrated in the following figure:

    Single Text Field

    The single text field is created.

    Preview Report

    For a report with three pages plus a summary page, previewing the report shows:

    Page 1

    The summary page shows:

    Page 4