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 \"Pa
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
.
For other versions of Jaspersoft Studio, try the steps outlined in the subsequent subsections.
Create a variable as follows:
V_CURRENT_PAGE_NUMBER
1
$V{PAGE_NUMBER}
0
, use $V{PAGE_NUMBER} + 1
.1 of Y
, set Expression to $V{PAGE_NUMBER}
instead of the initial value expression, and leave the initial value expression empty.Page
These settings are illustrated in the following figure:
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 a Page Footer band as follows:
The footer is added.
Create a text field as follows:
msg("Page {0} of {1}", $V{V_CURRENT_PAGE_NUMBER}, $V{PAGE_NUMBER})
Auto
These settings are illustrated in the following figure:
The single text field is created.
For a report with three pages plus a summary page, previewing the report shows:
The summary page shows:
Regarding the current page number, evaluationTime=now
and $V{PAGE_NUMBER}
is your answer.
Unfortunately I don't think you can achieve what you want because there is a bug in PAGE_COUNT when Split Allowed is on for the Detail band. Otherwise evaluationTime=now
and "Page " + $V{PAGE_NUMBER} + " of " + $V{PAGE_COUNT}"
would probably work.
The common approach, as you mentioned, uses two separated text fields:
Current page number
$V{PAGE_NUMBER}
with EvaluationTime: Now
Total page number
$V{PAGE_NUMBER}
with EvaluationTime: Report
For page history show like: Page: 1 of 5
Make a Text Field :
"Page: "+$V{MASTER_CURRENT_PAGE}+" of "+$V{MASTER_TOTAL_PAGES}
Source:
<textField evaluationTime="Master">
<reportElement x="224" y="0" width="186" height="15" uuid="6641bb8b-9f48-4832-942b-8b04220030e6">
<property name="com.jaspersoft.studio.unit.height" value="px"/>
</reportElement>
<textElement verticalAlignment="Top">
<font size="8"/>
</textElement>
<textFieldExpression><![CDATA["Page: "+$V{MASTER_CURRENT_PAGE}+" of "+$V{MASTER_TOTAL_PAGES}]]></textFieldExpression>
</textField>
If you want to see page no like Page 1 of 5
on right side of the report footer use ireport or jasper report Palette Tools(Page X of Y) is perfect.
If you want to see page no like Page 1 of 5
on left side of the report footer use ireport.
Please follow below steps
Please take a TextField
"Page "+$V{V_CURRENT_PAGE_NUMBER}+" of "+ $V{PAGE_NUMBER}
I tried this approach, but ended up with incorrect page numbers: {1/7, 1/7, 2/7, 3/7, 4/7, 5/7, 6/7}.
For JasperReports 6+, use MASTER_CURRENT_PAGE
and MASTER_TOTAL_PAGES
system variables and remember to set the text field evaluation time to Master
:
<textField evaluationTime="Master">
<textElement textAlignment="Right"/>
<textFieldExpression><![CDATA[msg("Page {0} of {1}", $V{MASTER_CURRENT_PAGE}, $V{MASTER_TOTAL_PAGES})]]></textFieldExpression>
</textField>
See: http://jasperreports.sourceforge.net/sample.reference/book/index.html