Guardar PDF utilizando Springframework e iReport con paginado

Hola, para todos aquellos que utilizan springframework e iReport para visualizar sus reportes, les dejo un ejemplo para la visualización y guardado del reporte en el servidor.

  1. Lo primero que tendremos que hacer es extender de la clase org.springframework.web.servlet.view.jasperreports.AbstractJasperReportsSingleFormatView.
  2. En el constructor de nuestra clase especificar el tipo de contenido: setContentType("application/pdf");
  3. Sobrescribir los siguientes metodos: createExporter, useWriter y renderReport

En el método createExporter, en este método especificaremos los permisos que tendrá el reporte, en este caso lo podrán copiar, guardar e imprimir.

 

Antes de iniciar la explicación del método renderReport, hare mención de un método llamado moveTableOfContents, este método fue copiado de los ejemplos de las demos de jasperreports (), en la cual se especifica la creación de reportes con tablas de contenido. Les sugiero descargar el archivo japerreports-VERSION.zip y abrir el directorio demo/samples/tableofcontents para la creación de reportes con índice. El método utilizado en este ejemplo se obtuvo de la versión 3.7.5.

El método renderReport es el que utilizaremos para guardar nuestro reporte en el servidor, al igual para crear el paginado.
La siguiente línea invoca al método moveTableOfContents el cual manipulara al reporte para colocar el índice en el lugar correcto antes de ser guardado y visualizado.

 

Lo siguiente es la obtención del nombre con el cual se guardara el archivo y la ubicación física. Estos datos los obtenemos de los parámetros que se le envían al reporte, es decir. En el controlador previo de invocación del reporte, obtenemos los recursos de base de datos y asignamos parámetros al reporte. En este controlador se obtiene la dirección física de la aplicación y se asigna un nombre al reporte, el cual se agregan como parámetros para el reporte.
 

La siguiente línea de código invocara a un método recursivo que verificara la existencia del directorio y en caso de que no exista la creara.
 

Y finalmente el llamado del método que guardara nuestro reporte en disco.
 

El llamado en el views será de la siguiente manera:
 

A continuación les dejo todo el código completo de este ejemplo. Saludos. Dios los bendiga.

 

Opciones de visualización de comentarios

Seleccione la forma que prefiera para mostrar los comentarios y haga clic en «Guardar las opciones» para activar los cambios.
Imagen de AlexSnake

Excelente aporte

Desde que librerias de spring y jasper podemos hace uso de ese código???

Imagen de VictorManuel

¿?

import org.springframework.web.servlet.view.jasperreports.AbstractJasperReportsSingleFormatView;

Librerias

La version de Spring utilizada para los ejemplos es la 2.5.5 y la del iReport es la 2.5

Librerias

Es correcto la importacion