Consultor tecnológico de desarrollo de proyectos informáticos.
Ingeniero Informático *
Creador del blog Rueda Lenticular
Charla sobre Pluto
Puedes encontrarme en Autentia: Ofrecemos servicios de soporte a desarrollo, factoría y formación
Somos expertos en Java/J2EE
Fecha de publicación del tutorial: 2009-02-16
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
- Librería de JasperReports (http://jasperforge.org/).
- JDK 1.3 o posterior.
- Librería Jakarta Commons Digester Component (http://jakarta.apache.org/commons/digester/)
- Librería Jakarta Commons BeanUtils Component (http://jakarta.apache.org/commons/beanutils/)
- Librería Jakarta Commons Collections Component (http://jakarta.apache.org/commons/collections/)
- Librería Jakarta Commons Logging Component (http://jakarta.apache.org/commons/logging/)
- Si queremos conexión JDBC con base de datos tenemos que tener el Driver JDBC 2.0.
- Si queremos exportar nuestros informes a PDF necesitamos la librería iText (http://www.lowagie.com/iText/)
- Si queremos exportar nuestros informes a XLS necesitamos la librería Jakarta POI (http://jakarta.apache.org/poi/)
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).
A continuación puedes evaluarlo:
Fecha publicación: 2012-06-25-04:52:26
Autor: martinjose8
Fecha publicación: 2011-03-16-15:19:52
Autor: ktyk
Espero que me puedan ayudar lo que ahora quiero es modificar estas lineas:
# $dir ="D:tutorial";
# $jrDirLib = "D:tutoriallib";
con una direccion así para que se pueda acceder desde el host
# $dir ="127.0.0.1tutorial";
# $jrDirLib = "127.0.0.1tutoriallib";
Es decir no utilizar la ruta fisica? puedo hacer eso?
Talvez me pueden ayudar?
Graciasss de verdad por su tiempo! :)
Saludos Ktyk-
Fecha publicación: 2011-01-26-00:33:19
Autor: Jaimeaga
Fatal error: Uncaught exception 'JavaException' with message 'Java Exception java.lang.ClassNotFoundException: net.sf.jasperreports.engine.JasperCompileManager java.lang.ClassNotFoundException: net.sf.jasperreports.engine.JasperCompileManager at java.net.URLClassLoader$1.run(URLClassLoader.java:217) at java.security.AccessController.doPrivileged(Native Method) at java.net.URLClassLoader.findClass(URLClassLoader.java:205) at java.lang.ClassLoader.loadClass(ClassLoader.java:321) at sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:294) at java.lang.ClassLoader.loadClass(ClassLoader.java:266) at java.lang.Class.forName0(Native Method) at java.lang.Class.forName(Class.java:186) ' in /var/www/tutorial/index.php:29 Stack trace: #0 /var/www/tutorial/index.php(29): *No Class!*->jbridge('net.sf.jasperre...') #1 {main} thrown in /var/www/tutorial/index.php on line 29
Fecha publicación: 2010-10-27-04:33:29
Autor: pablovargas
Fecha publicación: 2010-07-19-18:38:22
Autor: nosferatu9256
Fecha publicación: 2010-07-19-16:51:56
Autor: nosferatu9256
Fecha publicación: 2009-12-23-18:45:17
Autor: LWS
entederle a esto si podrias postear el codigo entero para poder entederle bien por fa vor te lo agradceria
infinitamente es que asi no le entiendo mucho me ayudarias mucho si postearas el codigo de ejemplo completo
Fecha publicación: 2009-08-11-07:33:22
Autor:
Fecha publicación: 2009-08-07-09:46:24
Autor:
Fecha publicación: 2009-07-21-01:38:12
Autor:











