Integración de JasperReports con PHP

Integración de JasperReports con PHP

Introducción

En este tutorial vamos a explicar con ayuda de un ejemplo práctico como podemos integrar JasperReports en nuestras aplicaciones PHP. JasperReports es una herramienta escrita en Java de código abierto (open source) para generar informes, por lo que tendremos que, de alguna forma, integrar dentro de nuestras páginas PHP llamadas a clases Java. Para ello vamos a usar un Puente PHP/Java. Nuestro compañero Juan Alonso hizó hace algún tiempo un tutorial (http://www.adictosaltrabajo.com/tutoriales/tutoriales.php?pagina=PuentePHPJava) precisamente sobre este tema, donde nos enseña paso a paso como instalar y configurar nuestro puente PHP/Java.

Después de leer el anterior tutorial y una vez instalado el puente PHP/Java en nuestro servidor vamos a lo que nos interesa: integrar JasperReports en nuestros scripts PHP.

Librerías requeridas

Configuración

Lo primero que tenemos que hacer es importar las librerías necesarias para usar JasperReports dentro de nuestrás páginas PHP.

Este código carga en el CLASSPATH todas las librerías situadas en un directorio determinado, donde hemos colocado nuestras librerías anteriormente mencionadas. Una vez que tenemos nuestro CLASSPATH preparado vamos a ver como podemos compilar, rellenar y exportar nuestros informes.

Ejemplo práctico

El siguiente código utiliza instrucciones Java para llamar a los métodos de JasperReports que compilan, rellenan y exportan a PDF un determinado informe.

Una vez ejecutado este script PHP se habrá generado un fichero pdf en el directorio especificado.

A continuación vamos a ver un ejemplo completo montado sobre una pequeña aplicación PHP.

Despúes de seleccionar un determinado documento y pulsar el botón de “Enviar” se compila, rellena (los informes no acceden a base de datos por lo que no se “rellenan” realmente) y se exporta a formato pdf.

¡¡¡ Ya tenemos nuestro informe de ejemplo !!!

Aquí os dejo un zip con los ficheros utilizados en este tutorial (informes jrxml y página PHP).