jaspersoft jasperreports jasper for example jasper-reports

jasper reports - jasperreports - Mostrar "Página X de Y" usando un solo campo de texto



jasperreports server (5)

Me gustaría crear un campo de texto que contenga la Page X of Y , sin dividirlo en dos partes, según la solución común. Mi campo de texto contiene "Page " + $V{currentPage} + " of " + $V{PAGE_NUMBER}" con "Page " + $V{currentPage} + " of " + $V{PAGE_NUMBER}" evaluationTime=auto .

Digamos que tengo un informe con 10 páginas. Tres son la banda de título , seis son la banda de detalle y una es la banda de resumen . Mis resultados muestran "Page 0 of 10" para la Banda de título , recuentos correctos para la Banda de detalle , luego "Page 0 of 10" para la Banda de resumen .

¿Cómo garantiza que la variable se calcule en todas partes, no solo en la Banda de detalles ?


Jaspersoft Studio, 6+

Para Jaspersoft Studio v6, o si el primer número de la página está duplicado, pruebe esta solución , que usa $V{MASTER_CURRENT_PAGE} y $V{MASTER_TOTAL_PAGE} con un tiempo de evaluación de Master .

Jaspersoft Studio

Para otras versiones de Jaspersoft Studio, pruebe los pasos descritos en las subsecciones subsiguientes.

Crear variable

Crea una variable de la siguiente manera:

  1. Crea una variable llamada V_CURRENT_PAGE_NUMBER
  2. Seleccione la variable para abrir sus propiedades (ilustrado abajo)
  3. Establecer expresión a: 1
  4. Establezca la expresión de valor inicial en: $V{PAGE_NUMBER}
    • Si el número de la página muestra 0 , use $V{PAGE_NUMBER} + 1 .
    • Si el número de página siempre muestra 1 of Y , establezca Expresión en $V{PAGE_NUMBER} lugar de la expresión de valor inicial, y deje la expresión de valor inicial en $V{PAGE_NUMBER} .
  5. Establecer tipo de reinicio en: Page

Estos ajustes se ilustran en la siguiente figura:

Establecer la expresión en 1 evita que su valor sea null . Es decir, si el pie de página muestra Página nula de 4 , probablemente significa que la Expresión no se ha establecido.

Se crea la variable.

Añadir pie de página

Agregue una banda de pie de página de la siguiente manera:

  1. Seleccione el informe en el panel de esquema
  2. Verifique el resumen con el encabezado y el pie de página para asegurarse de que el pie de página aparece en la página de resumen.
  3. Añadir una banda de pie de página .

Se añade el pie de página.

Crear campo de texto

Crea un campo de texto de la siguiente manera:

  1. Arrastre y suelte un solo campo de texto en la banda de pie de página .
  2. Seleccione el campo de texto.
  3. Establezca la expresión en: msg("Page {0} of {1}", $V{V_CURRENT_PAGE_NUMBER}, $V{PAGE_NUMBER})
  4. Establecer el tiempo de evaluación en: Auto

Estos ajustes se ilustran en la siguiente figura:

Se crea el campo de texto único.

Vista previa del informe

Para un informe con tres páginas más una página de resumen, la vista previa del informe muestra:

La página de resumen muestra:

Vea la publicación del blog de Robert Ensinger sobre este tema para más detalles.


Con respecto al número de la página actual, $V{PAGE_NUMBER} evaluationTime=now y $V{PAGE_NUMBER} es su respuesta.

Desafortunadamente, no creo que puedas lograr lo que quieres porque hay un error en PAGE_COUNT cuando Split Permitido está PAGE_COUNT para la banda de Detalle. De lo contrario, "Page " + $V{PAGE_NUMBER} + " of " + $V{PAGE_COUNT}" evaluationTime=now y "Page " + $V{PAGE_NUMBER} + " of " + $V{PAGE_COUNT}" probablemente funcionará.


El enfoque común, como usted mencionó, utiliza dos campos de texto separados:

Número de página actual

$V{PAGE_NUMBER} con EvaluationTime: ahora

Número total de páginas

$V{PAGE_NUMBER} con EvaluationTime: informe


Esto debería ayudar, utilizando la evaluación hora como informe.

<textField> <reportElement x="497" y="0" width="32" height="12" forecolor="#7E8083" uuid="ef663cfd-4058-40bb-a6d9-de7f9a8164be"/> --update your elements here <textElement textAlignment="Right" verticalAlignment="Middle"> <font fontName="SansSerif" size="7" pdfFontName="OpenSans-Regular.ttf"/> </textElement> <textFieldExpression> <![CDATA["Page " + $V{PAGE_NUMBER} + " of"]]> </textFieldExpression> </textField> <textField evaluationTime="Report"> <reportElement x="529" y="0" width="7" height="12" forecolor="#7E8083" uuid="ef663cfd-4058-40bb-a6d9-de7f9a8164be"/> --update your elements here <textElement textAlignment="Right" verticalAlignment="Middle"> <font fontName="SansSerif" size="7" pdfFontName="OpenSans-Regular.ttf"/> </textElement> <textFieldExpression> <![CDATA[$V{PAGE_NUMBER}]]> </textFieldExpression> </textField>


Intenté este enfoque , pero terminé con números de página incorrectos: {1/7, 1/7 , 2/7, 3/7, 4/7, 5/7, 6/7}.

Para JasperReports 6+, use las variables del sistema MASTER_CURRENT_PAGE y MASTER_TOTAL_PAGES y recuerde configurar el tiempo de evaluación del campo de texto en Master :

<textField evaluationTime="Master"> <textElement textAlignment="Right"/> <textFieldExpression><![CDATA[msg("Page {0} of {1}", $V{MASTER_CURRENT_PAGE}, $V{MASTER_TOTAL_PAGES})]]></textFieldExpression> </textField>

Consulte: http://jasperreports.sourceforge.net/sample.reference/book/index.html