PHP-JRU 1.0 RC3

Esta se puede considerar realmente la primera versión de PHP-JRU, ya que posee un conjunto de utilidades mas elaboradas que las versiones anteriores, que siempre se habían mantenido como una prueba.

Sin embargo, aun tiene algunos detalles en cuanto a la documentación y el soporte para mayores conexiones jdbc,  por lo que aun no se considera estable, pero de seguro cumplirá su función para la mayor parte de los casos para los que se pretenda usar. A continuación se listan algunas de las funcionalidades que son nuevas en esta versión:

  • Administración de reporte basado en extensiones (plugin).
  • Capa abstracta para el manejo de conexiones JDBC.
  • Eliminación automática de archivos generados en el proceso de compilación y considerados basura.
  • Método para generar reporte directo a un buffer. (*1)
  • JavaBridge Integrado con librerías JasperReport 4.0 y conectores JDBC mas comunes. (Mysql, postgres, Mssql…). (*2)
  • Ampliación de la documentación.  (*3)

*1 El proceso de enviar un reporte directo a un buffer en memoria, es solo una emulación. El reporte se genera en el disco, pero se elimina todo rato de el mismo después de cargarlo en memoria.

*2  Con el tiempo se agregará soporte para otras conexión jdbc importantes, como oracle.  Se esperaba  poder usar xml y xls como DataSource y aunque en teoría se puede su funcionamiento es errático.

*3 El manual tiene detalles  pero es en cuanto a el diseño y la estructura.

Sin mas otra cosa que reseñar los invito a descargar desde el siguiente enlace:

https://sourceforge.net/projects/php-jru/files/1.0/

Anuncios

78 comentarios en “PHP-JRU 1.0 RC3

  1. Gracias mi pana, por esta herramienta… y ya la estoy descargando para probar las mejoras…

    De antemano mi hermano en lo que te podamos ayudar para fomentar esta herramienta que ayuda en la mejora de esta libreria..
    Cuenta Conmigo..

    Mientras tanto voy hacer un minitutorial de como acoplarlo a KumbiaPHP.. 😛

  2. Saludos alejandro,

    Por los momentos estoy buencando tiempito para ver si monto una wiki, y pues un manual para la implementación en kumbiaPHP es una buena idea!

    • Estimado Robert Bruno : Agradezco su instructivo y esfuerzo por ayudar en el uso de esta herramienta.
      Le hice algunas preguntas por correo que le detallo aquí :

      a.- Tenemos un reporte que imprime un tiquete de caja en JASPER. Este reporte en el Ireport sale con edición decimal y ‘,’ en los miles. Pero a la hora de ejecutarlo por medio las utilerías php-jru si se ejecuta bien y sale el reporte, pero NO salen las comas en el divisor de miles. Además la fecha sale en formato inglés.

      Nuestro sitio es de COSTA RICA, yo modifiqué el parámetro SET LOCALE del fuente , y en otro intento le puse comentarios, pero en todos los casos sucede lo mismo.

      Primero tal y como viene el ejemplo
      $parameters->put(‘REPORT_LOCALE’, new Java(‘java.util.Locale’,’es’, ‘VE’));

      Luego
      $parameters->put(‘REPORT_LOCALE’, new Java(‘java.util.Locale’,’es’, ‘CR’));

      Luego
      comenté la linea

      En todos los casos sale sin divisor de miles y la fecha en inglés

      b.- Quisiéramos saber como pasamos parámetros al SQL del reporte, por ejemplo el select recibe numero de factura que en el Jasper es $P{numero_factura}

      c.- Además si es posible generar un TXT, ya tratamos usando la propiedad PJRU_TXT, pero no es válida
      Este fue el código que definimos
      $result = $reportManager->RunToBuffer(‘tiquete’,PJRU_TXT);

      Agradezco de antemano su colaboración

      Att
      Eladio Mora
      (506)-83961708

      emora.vistaverde@gmail.com

      • Saludos amigo ELADIO!

        Según lo que me comenta todo parece estar bien, lo que le recomiendo es revisar si le esta indicando el patrón a usar para los campos de tipo fecha y numéricos en el reporte, es decir, en el jrxml.

        Por otro lado le comento que no es posible, por lo menos desde php-jru, generar un formato txt.

        Aprovecho la oportunidad de invitarlo a que nos ayude a generar documentación sobre el uso de PHP-JRU y a probar la versión en desarrollo que tiene algunos cambios importantes.

  3. Hey, hola hola.
    He estado siguiendo el desarrollo desde hace uno meses, y ahora quería probar este lanzamiento… pero es que tengo problemas 😛

    Verás, quiero integrar el PHP-JRU Symfony 1.4, pero no he tenido éxito.

    Intenté modificando el archivo ProjectConfiguration.php agregado esta línea:
    include_once ‘../lib/php-jru/php-jru.php’;

    Desde luego, dentro del directorio lib he copiado todo lo relacionado con el php-jru. Cuando ejecuto la aplicación obtento una página en blanco, y nada más, ni un mensaje de error, nada =/

    Estuve revisando el archivo pgp-jru.php y después de un par de pruebas determiné que todo se detiene en esta línea:
    require_once(JAVA_INC_URL);

    Intenté poniendo a mano sólo esa línea en el archivo ProjectConfiguration.php:
    require_once(‘http://localhost:8080/PHPJRU/java/Java.inc’);

    Pero justo allí muere.

    ¿Alguna idea, consejo?. @_@

    Saludos y gracias.

  4. ¿Oye Roberto, pudiste lograr algún resultado?. Yo sigo sigo en el mismo estanco… Bueno, seguiré a la expectativa.

  5. Saludos, gracias por la nueva versión de PHP-JRU, leí que tiene un método para generar reporte directo a un buffer; ¿podrías platicarme mas al respecto por favor? aun no entiendo como utilizarlo

  6. Buenas tardes amigo soy con esta librería ahora tratando de seguir el ejemplo que tienes para la generación del archivo de excel me sale el siguiente error

    PHP Notice: Undefined variable: buffer in /home/doliver/tutorial4/php-jru/ReportManager/ReportManager.php on line 140

    de verdad me gustaría mucho usar la clase pero no me ha sido posible de antemanos gracias

    • Hola amigo, saludos!!!

      Si te fijas bien no es un error es un NOTICE.

      Esto se debe a que la variable buffer no esta defina al momento de usarla, pero en php es algo que se puede hacer. Sin embargo, si no deseas que te muestre este mensaje debes cambiar éste comportamiento mediante la función error_reporting de php, para mayor información sobre el uso de la misma visita: http://php.net/manual/es/errorfunc.configuration.php

      Hay algunos error en la última versión de php-jru y el archivo zip que esta disponible para la descarga esta corrupto debido a errores al momento de subirlo, en lo que tenga algo de tiempo entre esta y la próxima semana estaré subiendo una nueva versión y un nuevo manual.

  7. Primero felicitarte sobre el excelente trabajo realizado, me ha sido de gran utilidad. Actualmente lo tengo integrado con CakePHP, sin embargo tuve que realizar algunas modificaciones sobre la librería y corregir un par de errores que encontré; como podemos hacer para que revises las modificaciones que realice sobre la librería y las integremos a un nuevo release.

  8. Hola Robert! Primero que nada, te felicito por tu iniciativa con un proyecto como este y mas que todo porque he visto de hace un tiempo que se ha progresado en el mismo con diferentes actualizaciones, desde hace un tiempo atras he estado por implementarlo pero solo ahora es que me he dispuesto a eso, estoy muy interesado, existe alguna actualización del archivo “alticJasper.jar”? donde puedo conseguirlo ?
    tendrás algún manual detallado de implementación? saludos.

  9. hola robertbruno. Que tal? queria saber si has logrado integrar PHP-JRU con Symfony1.4? de ser asi, como? puesto que llevo semanas sin lograr la conexion.

    Saludos

  10. Buenos dias:

    Disculpa, se puede integrar con CodeIgniter? Como seria la forma de integrarlo?

    Gracias.

  11. Excelente! Lo hice funcionar bajo windows en 20 minutos, conectando a MySQL. Con XAMPP, el tomcat que trae el XAMPP y siguiendo las instrucciones del manual.

    El unico problema que tuve y solucione rapido es fue un error en el inicio de javabridge de al iniciar tomcat con catalina_start, que indicaba que no encontraba php-cgi.exe.

    Se lo indique manualmente editando tomcat/bin/catalina.bat y agregando a la linea que corre Tomcat lo siguiente:

    -Dphp.java.bridge.php_exec=/xampp/php/php-cgi.exe

  12. phyllobates o robertbruno pueden subir la clase ya integrada con cakephp? me serìa de mucha ayuda o podrian mandarla a clopez cesarlopez me

  13. hola robertbruno que debo hacer para manejar esta libreria con firebird/interbase? tengo un par de dias intentandolo y no consigo hacer que funcione. ademas no encuentro documentacion o algun ejemplo de con firebird. me podrias decir si hay alguna manera porfavor…

    • Saludos Ramón!

      Primero te explico como PHP-JRU maneja la conexión de base de datos:

      PHP-JRU crea una capa abstracta asociada con controladores jdbc para que el desarrollado php no tenga que incluir código java dentro de su aplicación,esto significa que la conexión a base de datos se hace en java, es decir, el archivo .war que debe estar ejecutándose en tomcat.

      Entonces, lo primero que hay que hacer es agregar el controlador JDBC en ese archivo WAR. Para ello tendrás que descomprimir el archivo war agregar el controlador (en la carpeta lib o donde estén el resto de los archivos .jar), comprimirlo y volverlo a cargar en el tomcat.

      Te adjunto un link donde hay información sobre esto:
      http://cnslinux.blogspot.com/2008/04/java-comprimir-y-descomprimir.html

      El controlador jdbc de firebird o interbase lo puedes descargar de los siguiente links:
      http://www.firebirdsql.org/en/jdbc-driver/
      http://developers.sun.com/product/jdbc/drivers/

      Ahora una vez cargado el controlador jdbc debes agregar la capa abstracta que permite asociar dicho controlador con un tipo de conexión en PHP-JRU, para ello debes crear las clases correspondientes a cada controlador, cada una de ellas debería de ser algo así:

      Para Firebird

      class Firebird implements JdbcAdapterInterface
      {
      public function getConexion($host,$port,$database,$user,$password)
      {
      if(!$host) $host = ''; //TODO agregar host por defecto

      $port = $port ? ":$port" : "";

      if(!$database) $databsae = 'postgres';

      $conn = new JdbcConnection(
      'org.firebirdsql.jdbc.FBDriver',
      "jdbc:firebirdsql://$host$port/$database",
      $user,
      $password
      );

      return $conn;
      }
      }

      Para Interbase

      class Interbase implements JdbcAdapterInterface
      {
      public function getConexion($host,$port,$database,$user,$password)
      {
      if(!$host) $host = ''; //TODO agregar host por defecto

      $port = $port ? ":$port" : "";

      if(!$database) $databsae = 'postgres';

      $conn = new JdbcConnection(
      'interbase.interclient.Driver',
      "jdbc:interbase://$host$port/$database",
      $user,
      $password
      );

      return $conn;
      }
      }

      • perdona que no te respondiera antes, pero estaba de vacaciones…
        ya hice lo que me dijiste y luego de un par de arreglos logre que generara el .pdf (eso suena bien). pero me genera un pdf con una pagina en blanco jejeje ni idea de xq… si me puedes ayudar con esto please

  14. buenos dias!disculpa , se me presenta el siguiente problema, cuando configuro el separador de miles en jasper report para una variable o un campo, en el preview de jasper me muestra este separador donde lo asigne, cuando lo llevo a la aplicacion que estoy llevando ejecutando conjuntamente con el PHP-JRU en el reporte no me lo muestra, no entiendo a que se deba esto?porque lo que muestra en el preview de jasper deberia ser igual al reporte cuando se ejecuta en la aplicacion, agradeceria tu pronta respuesta, Saludos!

    • En el método getParam del reportExtension debes indicarle el parámetro REPORT_LOCALE de la siguiente forma:

      $parameters->put(‘REPORT_LOCALE’, new Java(‘java.util.Locale’,’es’, ‘VE’));

      En este caso el locate corresponde a español Venzuela, si deseas ingles de USA pudiera ser así :

      $parameters->put(‘REPORT_LOCALE’, new Java(‘java.util.Locale’,’en’, ‘US’));

      • No me funciono ya habia pasado en parametro el REPORT_LOCALE, y aun sigo obteniendo lo mismo:
        en el preview de jasper = 1.234,55
        en el reporte en la aplicacion = 1234,55444
        ya he configurado los field patterns y no funciona, verifique que los tipos de las variable o campos que uso fueran de tipo numericos y aun nada, no se que otra cosa pueda intentar o si sabes otra cosa que me pueda estar originando ese error?

      • lo raro es el ejemplo que esta montado, en la carpeta php-jru, si lo ejecuta a la perfeccion, he probado tambien, comentando report locale en dicho ejemplo e igual me lo sigue mostrando como si no hubiera cambiado nada, que version de ireport usaste para realizar el reporte “productos.jrxml” ? aunque dudo mucho que eso sea, de verdad estoy urgido, estoy intentando de todo para probar pero aun nada, te agradeceria bastante si puedieras ayudarme

      • Verifica que en el diseño del reporte también este descrito el parámetro REOPRT_LOCATE, en última instancia compara el xml de ambos a ver cual es la diferencia en los parámetros.

      • gracias bro!ya lo resolvi, era un parametro que faltaba en el xml, muchas gracias por las respuestas, de verdad me ha sido de mucha utilidad php-jru, gracial mil!

  15. Para quien le ocurra lo mismo que a mi(que se les presenten problemas al mostrar nros con decimales y separador de miles cuando implementan el reporte en la aplicacion real) en la version del Ireport 4.5 , tiene una falla, que cuando uno cambia en un textfield la propiedad Expression class, visualmente realiza el cambio en la pestaña properties, pero en el .xml del reporte no lo hace, ya lo comprobe varias veces, entonces hay dos opciones, o se agrega la propiedad manualmente en un editor de texto para el textfield ó se trabaja con la version 4.7.1 de ireport, saludos

  16. hola he activado el allow_url_include…. pero no me carga, ya verifique el puerto y todo esta bien, creo que tiene que ver con php, a lo mejor alguna configuracion me falta aparte de esa?… saludos

  17. Que tal, excelente herramietna, en una version anterior pude hacer andar esto sin ningun problema pero en la v1.0 rc3 hise todo lo que tenia que configurar, sin embargo cuando llamo al reporte de jasperreport me genera solamente un pdf en blanco, alguien sabe por que? o que otra configuracion me hace falta?, agrego los pasos que segui.
    primero hay que instalar xampp o apache+mysql+php+apache tomcat
    si instalamos xampp debemos tener instalado visual c++ 2008 (correr el archivo vcredist_x86)

    agregamos las variables de usuario y del sistema
    JAVA_HOME
    C:\Archivos de programa\Java\jdk1.6.0_23
    y la variable del sistema
    PATH
    %JAVA_HOME%;%PATH%

    Editar php.ini
    allow_url_include=On

    en Module Setting agregar
    [java]
    java.java_home =”C:\Archivos de programa\Java\jdk1.6.0_23\jre\bin”
    java.java = “C:\Archivos de programa\Java\jdk1.6.0_23\jre\bin\javaw.exe”

    copiar Javabridge.war en xampp/tomcat/webapps

    agregar en tomcat C:\xampp\tomcat\conf\tomcat-users.xml

    levantar tomcat

    Descomprimir la carpeta Jasper Reports (jasperreports-4.5.0/lib)
    y copiar los archivos jar (C:\xampp\tomcat\webapps\JavaBridge\WEB-INF\lib)
    estos archivos los tengo en la carpeta “libs”

    Copiar las librerías jar, que están en la siguiente ruta (tu version de ireport: estos archivos los tengo en la carpeta “libs”)
    que para el server no es necesario instalar pero para copiar las librerias si:
    C:\Archivos de programa\Jaspersoft\iReport-4.0.0\ireport\modules\ext
    Pegarlas dentro de: C:\xampp\tomcat\webapps\JavaBridge\WEB-INF\lib
    Nota: El sistema preguntara si sobreescribe algunos archivos, de clic en aceptar.

    Copiar los Conectores o drivers para MySql y Postgress, junto con los otros archivos
    jar de la siguiente ruta:
    C:\Archivos de programa\Jaspersoft\iReport-4.0.0\ide10\modules\ext
    pegarlos dentro de: C:\xampp\tomcat\webapps\JavaBridge\WEBINF\lib

    copiar este archivo (alticJasper.jar) a: C:\xampp\tomcat\webapps\JavaBridge\WEBINF\lib

    Reiniciar con el siguiente comando: catalina_stop.bat

    Copiamos la carpeta php-jru a la siguiente ruta del lado del servidor Web: C:\xampp\htdocs
    Dentro de la carpeta php-jru, hay un archivo llamado: php-jru.php; El cual
    editamos, modificando una línea de código.
    Cambiamos:
    http://localhost:8080/PHP-jru/java/Java.inc
    Por esta otra:
    http://localhost:8080/JavaBridge/java/Java.inc

    • Es probable que necesites revisar la configuración a la base de datos.

      • Eso hice, si tenia un problema conectando a la base de datos, pero lo resolvi, despues quite la conexion y puse solo una etiqueta, lineas y cuadros dibujados en el reporte, sin embargo, no me despliega nada. crees k puedan ser permisos, o algo en la configuracion del reporte?

      • disculpa brother, tengo un serio problema, instale PHPJRU en un servidor LAPP con debian squeeze ,hasta la parte de acceder a la pagina http://localhost:8080/PHPJRU, todo funciona correctamente, cuando estoy ejecutando el reporte, y hace el llamado al include(php-jru.php) entra a esta clase pero se queda detenido justamnte en require_once(JAVA_INC_URL), ya modifique el php.ini, coloque el url de diferentes maneras incluyendo directo, y nada, justamente cuando esta accediendo al url dond esta Java.inc, simplemente no hace nada, no da error nada,no hace nada, de verdad no se que hacer, si pudieras ayudarme o si ya te ah pasado esto, te lo agradeceria

      • Saludos Jesús,
        Primero asegurarse que en el archivo de configuración de php (php.ini) esté incluida esta directiva:
        allow_url_include = On
        Si tuviste que modificar el archivo, recuerda reiniciar el servicio de apache para que tome los cambios (service httpd restart).
        Particularmente yo tengo integrada la librería de PHPJRU con cakephp funcionando tanto en Windows (XAMPP) como en Linux (CENTOS), para Linux pone más problemas debido a los permisos de las carpetas entre el usuario tomcat y apache. Trata de realizar un chmod 777 a la carpeta de tu aplicación php.

      • Saludos Jesús,
        También, en su momento modifique la constante JAVA_INC_URL del archivo php-jru.php así:
        define(‘JAVA_INC_URL’,’http://127.0.0.1:8080/PHPJRU/java/Java.inc’);

      • Saludos phyllobates gracias por tus recomendaciones,pero aun nada, te hago una pregunta, para que en una aplicacion php lea los require_once de un enlace remoto en este caso http://, necesitas darle una configuracion extra a apache? debido a que en medio de mis pruebas, descubri, que no importa lo que escriba luego de http:// , igual queda sin hacer nada, por ejemplo coloco http://fehfkjhfjkhsfkjshfk(algo que no existe) igual no me da error ni nada es como si no reconociera nada luego de http://, entonces de verdad no se q pueda pasar

  18. Saludos phyllobates gracias por tus recomendaciones, las intente pero aun nada, te hago una pregunta, para que en una aplicacion php lea los require_once de un enlace remoto en este caso http://, necesitas darle una configuracion extra a apache? debido a que en medio de mis pruebas, descubri, que no importa lo que escriba luego de http:// , igual queda sin hacer nada, por ejemplo coloco http://fehfkjhfjkhsfkjshfk(algo que no existe) igual no me da error ni nada es como si no reconociera nada luego de http://, entonces de verdad no se q pueda pasar

    • Que tal saludos. Pues nada, aun no logro que el pdf imprima algo, ni siquiera una linea me muestra, solamente muestra una pagina en blanco, alguna idea o consejo para poder hacer funcionar esto por favor
      , realmente me urge

    • Jesús y has probado lo siguiente desde el browser de tu maquina debían?
      http://127.0.0.1:8080/PHPJRU/
      Te debe aparecer una pantalla en el browser indicándote que la instalación es correcta, luego puedes probar con este otro enlace:
      http://127.0.0.1:8080/PHPJRU/java/Java.inc
      Con la cual debe aparecer una pantalla con código.

      En relación a los permisos también ten en cuenta como están los permisos de los archivos de iReports, yo uso los compilados es decir .jasper; estos deben tener permisos de lectura para todos.

      Si puedes añadir un fragmento de código de como estas usando la librería, sería de gran utilidad

  19. $fp=@fopen(‘http:/’.’/localhost:8080/PHPJRU/java/Java.inc’,”r”);//Utilizamos fopen para abrir esa url

    if($fp){//Si fopen abre la url

    echo “Si existe”;//ENTRA AQUI POR QUE EL LINK SI EXISTE

    }else{//si no devuelve false

    echo “No existe”;
    }
    define(‘JAVA_INC_URL’,’http://localhost:8080/PHPJRU/java/Java.inc’);
    //print (JAVA_INC_URL);
    /**
    * define la version de PHP-JRU
    * */
    define(‘PHP_JRU_VERSION’,’1.0′);

    if( ! function_exists(‘java’)){
    if( ini_get(“allow_url_include”))
    require_once(JAVA_INC_URL);//AQUI LLEGA Y NO HACE MAS NADA NI ERRORES NI NADA,AQUI SE QUEDA, Y EL LINK YA FUE COMPROBADO ANTERIORMENTE
    else
    die (‘necesita habilitar allow_url_include en php.ini para poder usar php-jru.’);
    }
    //VIENE LA PARTE DE LAS OTRAS DEFINICIONES A LAS CUALES NO LLEGA PORQUE SE CUELGA DONDE TE INDIQUE

  20. Finalmente encontre el problema, esta version soporta ireport 4.0, yo intentaba hacerlo funcionar con ireport 4.5, en fin, no cometan el mismo error. y una pregunta más como podemos apoyar tu trabajo robertbruno ? esto esta muy interesante y nos brinda mucho poder, me gustaria ser participe de esto

    • Ricardo, podrias darme una mano? Me pasa lo mismo que te paso a vos, solo qu yo si estoy usando jasper 4.0.0 y ireport 4.0.0
      La verdad no se que puede ser me tiene desconcertado. Inlcuso los ejemplos que vienen en el paquete me salen como una sola pagina en blanco

  21. Saludos mi buen!, intentando hacer funcionar esta grandiosa herramienta, me encontre con varios problemas, que finalmente logre solucionar. pongo el codigo que utilice y los pasos que segui para solucionar los problemas por si es de ayuda para alguien.
    1.- php debe ser instalado como cgi, revisar las rutas, en windows debe de estar en c:\php en linux no he tenido tiempo de probar.
    2.- asegurate de que alticjasper.jar esta dentro de las librerias en: C:\xampp\tomcat\webapps\PHPJRU\WEB-INF\lib

    3.- tambien en C:\xampp\tomcat\webapps\PHPJRU\WEB-INF\lib, debes de copiar los jars que se encuentran en: C:\Archivos de programa\Jaspersoft\iReport-4.7.0\ireport\modules\ext

    4.- agrega en php.ini:
    [java]
    java.java_home = “C:\Archivos de programa\Java\jdk1.6.0_35\bin”
    java.java = “C:\Archivos de programa\Java\jdk1.6.0_35\bin\javaw.exe”

    la manera de revisar si todo marcha bien y que a mi me funciono es lo siguiente:
    corro apache y mysql
    corro tomcat y hay que estar viendo los textos que te arroja catalina_start.bat
    si no da ningun error entonces ya es posible generar el reporte.
    y comprobado, estoy corriendo ireport 4.7 + php 5 (CGI) +apache2+mysql5

    Nota: por alguna razon el reporte debe de contener algun query de algunas de las tablas que existen en la base de datos con la que hacemos conexion (en mi codigo la base de datos es: phpjasperxml) y en el reporte tengo un query que es(select * from clientes).

    Importante, esto solo me funciono para los archivos .jasper, hasta ahorita no he podido compliar archivos .jrxml, si alguien lo ha logrado por favor ayudenme rherl23@gmai.com

    //Llamando las librerias
    // require_once(‘http://localhost:8080/JavaBridge/java/Java.inc’);
    require_once(‘http://localhost:8080/PHPJRU/java/Java.inc’);
    require(‘php-jru/php-jru.php’);
    //Llamando la funcion JRU de la libreria php-jru
    $jru=new PJRU();

    $Reporte=’C:\\xampp\\htdocs\\jasperreportphp\\reports\\sampleX.jasper’;
    $SalidaReporte=’C:\\xampp\\htdocs\\jasperreportphp\\output\\test1.pdf’;

    //Parametro en caso de que el reporte no este parametrizado
    $Parametro=new java(‘java.util.HashMap’);
    //Funcion de Conexion a mi Base de datos tipo MySql
    $Conexion= new JdbcConnection(“com.mysql.jdbc.Driver”,”jdbc:mysql://localhost/phpjasperxml”,”root”,””);

    //Generamos la Exportacion del reporte
    $jru->runReportToPdfFile($Reporte,$SalidaReporte,$Parametro,$Conexion->getConnection());

    if (file_exists($SalidaReporte)){
    header(‘Contentdisposition: attachment;filename=’.$SalidaReporte);
    header(‘Content-Type:application/pdf’);
    header(‘Content-Transfer-Enconding:binary’);
    header(‘Content-Length:’.@filesize($SalidaReporte));
    header(‘Pragma:no-cache’);
    header(‘Cache-Control:mustrevalidate,post-check=0,pre-check=0’);
    header(‘Expires:0’);
    set_time_limit(0);
    @readfile($SalidaReporte) or die(“Ocurrio un Problema”);
    }else{
    echo “error al generar el pdf”;
    }

  22. Buen día, al final he logrado generar el PDF a partir del Reporte creado en JasperReport, el problema surgio por haber tomado codigo de ejemplos distintos pero al final se pudo lograr el primer objetivo.

    Si alguien me pudiera ayudar con el siguiente paso, mostrar el PDF generado embebido en el browser, les agradeceria, adjunto el codigo que me funciono.

    Saludos,

    Omar

    inicio php>

    //Llamando las librerias
    require_once(‘http://localhost:8080/JavaBridge/java/Java.inc’);
    require(‘../php-jru/php-jru.php’);
    //Llamando la funcion JRU de la libreria php-jru
    $jru=new PJRU();
    //Capturo la variable cedula
    $vcedula=$_GET[‘cedula’];
    //Ruta del reporte compilado Jasper generado por IReports
    $Reporte=’C:/xampp/htdocs/nomina/reports/rol_individual.jasper’;
    //Ruta a donde deseo Guardar Mi archivo de salida Pdf
    $SalidaReporte=’C:/xampp/htdocs/nomina/reports/rol_individual.pdf’;
    //Parametro en caso de que el reporte no este parametrizado
    $Parametro=new java(‘java.util.HashMap’);
    $Parametro->put(“cedula”,$vcedula);
    //Funcion de Conexion a mi Base de datos tipo MySql
    $Conexion= new JdbcConnection(“com.mysql.jdbc.Driver”,”jdbc:mysql://localhost:3306/dpsl_nomina”,”root”,””);
    //Generamos la Exportacion del reporte
    $jru->runReportToPdfFile($Reporte,$SalidaReporte,$Parametro,$Conexion->getConnection());

    final <php

    • Te repito de nuevo que por la forma en que estas generando el reporte estas usando una versión muy antigua de PHP-JRU, te recomiendo descargues del siguiente link:
      http://php-jru.sourceforge.net/

      La ultima versión y leas la documentación. Sin embargo, si deseas dejarlo todo como esta, entonces te comento que para embeber el reporte en el explorador lo que necesitas es modificar las cabeceras:

      header(‘Content-type: application/pdf’);

      luego imprimir la data binaria del reporte, para mayor información sobre esto visita :
      http://php.net/manual/es/function.header.php

  23. Muchas gracias por la información, esta muy bueno tu blog

    Saludos,

    Omar

  24. Buenas tardes, queria consultar si es normal que al ejecutar los ejemlos de la carpeta examples, me salgan en blanco los pdf, estoy usando la version 4.7.1 tanto de iReport como de JasperReports. Es decir me devuelve un pdf, pero vacio sin contenido

    • En el archivo aparece $result = $reportManager->RunToFile(‘productos’,$_REQUEST[‘formato’]); debe ser $result = $reportManager->RunToBuffer(‘productos’,$_REQUEST[‘formato’]);

      • Al menos con el que hace consulta a postgres, los otros no he logrado saber por que ya que no se nos incluye el jrxml solo el jasper

  25. Hola amigo, te comento mi experiencia con lalibreria.
    No logro hacerla funcionar, trabajo en un sistema operativo W7 para el entorno de desarrollo, y si bien el entorno de produccion es un Unix, es imposible realizar las pruebas de desarrollo en produccion. Me parece que deberias tratar de generar documentacion mas completa, a veces los desarrolladores olvidamos que un buen software sin buena documentacion es entregarle el mando de un avion a quien siempre manejo bicicletas.
    Actualmente mi problema es que todos los reportes generados me los muestra como una sola pagina y en blanco, aun los de los ejemplos que vienen en el paquete. Lei en un post anterior que instalarlo en windows da muchos problemas pero no te olvides que la mayoria de los desarrolladores utilizamos windows, asi que te pediria que en el proximo release o por que no en este, hagas una documentacion mas extensa y por que no un video donde muestres desde cero como utilizar la libreria en un entorno windows.
    Saludos y muchos exitos con el proyecto.

    • Estimado, consegui mas info de mi problema, cuando ejecuto tu ejemplo de pgsql, al cual le cambie los datos para que se conecte a mysql, me sale este error al descargarlo como rtf

      java stack trace: java.lang.Exception: Invoke failed: [[c:JasperFillManager]]->fillReport((o:String)[o:String], (i:Map)[o:HashMap], (i:JRDataSource)[o:String]). Cause: java.lang.IllegalArgumentException: argument type mismatch VM: 1.6.0_37@http://java.sun.com/
      at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
      at sun.reflect.NativeMethodAccessorImpl.invoke(Unknown Source)
      at sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source)
      at java.lang.reflect.Method.invoke(Unknown Source)
      at php.java.bridge.JavaBridge.Invoke(JavaBridge.java:1044)
      at php.java.bridge.Request.handleRequest(Request.java:417)
      at php.java.bridge.Request.handleRequests(Request.java:500)
      at php.java.bridge.http.ContextRunner.run(ContextRunner.java:145)
      at php.java.bridge.ThreadPool$Delegate.run(ThreadPool.java:60)
      Caused by: java.lang.IllegalArgumentException: argument type mismatch
      … 9 more

      Por favor ayudame.

    • Saludos amigo, gracias por tus recomendaciones, sería de mucha ayuda que formaras parte de los colaboradores de este proyecto. Así podrías ayudar a crear dicha documentación para lazar la próxima versión. Puedes escribirme a robert.alexander.bruno@gmail.com

  26. Hola Estimado,
    Me podrías dar el link o enviar el alticjasper.jar que no lo encuentro…
    Saludos!

  27. Yo estoy de acuerdo en ayudar, solo que para hacerlo creo que primero es necesario entender el funcionamiento de tu desarrollo lo unico que te pedimos en general, sin caer en la exigencia por que sabemos que te has esforzado y has heho un excelente trabajo, es contar con un ejemplo probado ya que el que esta en el comprimido creo que nos manda el mismo problema de la pagina en blanco, un video seria excelente. Gracias

  28. mmm… Y SI NECESITO MANDAR PARAMETROS DE UNA PANTALLA AL REPORTE? ANDO EN ESO, ALGUNA IDEA

  29. Buenas comunidad les escribo para primeramente felicitar al creador del script! lo otro es para ver si me podian ayudar con esta situacion, es la siguiente: en la la actualidad logre establecer la conexion en windows para php-jru satisfactoriamente e incluso genere un reporte con ireport y genere un pdf desde un script php satisfactoriamente con el siguiente codigo:

    runReportToPdfFile($Reporte,$SalidaReporte,$Parmaetro,$Conexion->getConnection());

    echo “Reporte generado!!!!”;

    ?>

    MI PROBLEMA es que quisiera que me orientaran como hago para generar reportes en pdf, PERO con la salvedad de pasarle la consulta desde el mismo script php, lo he intentado con este codigo, pero NO me funciona:

    runPdfFromSql(“C:/xampp/htdocs/reportes/reportePrueba.jasper”,
    “C:/xampp/htdocs/reportes/reporteEjemploDos.pdf”
    ,$parameters,$sql,$conn);

    echo “Reporte Dos generado satisfaactoriamente!!!!!”;
    ?>

    Gradias de antemano!!!!! espero su respuesta 😀

  30. Buenas comunidad les escribo para primeramente felicitar al creador del script! lo otro es para ver si me podian ayudar con esta situacion, es la siguiente: en la la actualidad logre establecer la conexion en windows para php-jru satisfactoriamente e incluso genere un reporte con ireport y genere un pdf desde un script php satisfactoriamente con el siguiente codigo:

    runReportToPdfFile($Reporte,$SalidaReporte,$Parmaetro,$Conexion->getConnection());

    MI PROBLEMA es que quisiera que me orientaran como hago para generar reportes en pdf, PERO con la salvedad de pasarle la consulta desde el mismo script php, lo he intentado con este codigo, pero NO me funciona:

    runPdfFromSql(“C:/xampp/htdocs/reportes/reportePrueba.jasper”,
    “C:/xampp/htdocs/reportes/reporteEjemploDos.pdf”
    ,$parameters,$sql,$conn);

    echo “Reporte Dos generado satisfaactoriamente!!!!!”;
    ?>

    echo “Reporte Dos generado satisfaactoriamente!!!!!”;
    ?>

    Gradias de antemano!!!!! espero su respuesta

    • [Resuelto] Tenia que pasarle las variables por parametros!

      Me gustaria hacer unos tutoriales documentando todo esto para ayudar a los futuros desarrolladores

  31. Alguien tiene experiencia exitosa o aunque sea experiencia integrando PHP-JRU con Symfony 1.2??? me serviría de mucha ayuda gracias de antemano!!!!!!!

  32. LOGRE CORRERLO!!!!
    pronto publicaré un tutorial para correrlo linux
    alguien me puede pasar informacion acerca del metodo reportOutDir????? me urge un poco! RobertBruno porfa!

    • Saludos amigo, seria conveniente que me enviaras un documento con la descripción lo que lograste. Poco a poco en lo que tuve tiempo fui revisando detalles en PHP-JRU y hay cosas que serán consideradas deprecated incluyendo reporte outdir. En lo que pueda voy a subir una nueva versión

  33. Lo que quiero es que el pdf , excel que genere GUARDARLO en la computadora! alquien me puede ayudar? TENGO ENTENDIDO que se hace haciendo uso de del metodo reportOutDir, pero no se cuales parametros acepta, le puse la direccion de a donde guardar y me dice ERROR, alguien me puede ayudar por fa? Usé la version 1.0 RC3 de PHP-JRU, pronto publicare un tutorial explicando como lo logre correr en linux (ubuntu)

  34. Roberth Bruno , me podrias ayudar? , el problema que tengo es que Me trae problemas al descargar los archivos de EXCEL, con los PDF va bien, pero los EXCEL cuando los descargo (del lado del cliente) dice ERROR de formato y simplemente no abre el archivo!, cabe mencionar que en el servidor si se descarga BIEN el archivo y lo ABRO y todo bien, aqui adjunto mi codigo:

    RunToFile(‘productos’,PJRU_EXCEL);

    $enlace = $result;

    $nombreReporte = $_SESSION[‘reportName’];

    header(‘Content-type: ‘.$formatos[$_REQUEST[‘formato’]][1]);

    header(“Content-disposition: attachment; filename=$nombreReporte”);
    header(“Content-type: application/octet-stream”);
    readfile($result);
    print $result;
    ?>

    • [RESUELTO], tenia que descargar CUALQUIER ARCHIVO con el siguiente codigo:

      if (file_exists($result)) {
      header(‘Content-Description: File Transfer’);
      header(‘Content-Type: application/octet-stream’);
      header(‘Content-Disposition: attachment; filename=’.basename($result));
      header(‘Content-Transfer-Encoding: binary’);
      header(‘Expires: 0’);
      header(‘Cache-Control: must-revalidate, post-check=0, pre-check=0’);
      header(‘Pragma: public’);
      header(‘Content-Length: ‘ . filesize($result));
      ob_clean();
      flush();
      readfile($result);
      exit;
      }

  35. Hola que tal Robert, he estado probando la version 2 de tu libreria y me arroja este error:

    java stack trace: java.lang.Exception: Invoke failed: [[c:JasperRunManager]]->runReportToPdfFile((o:String)[o:String], (o:String)[o:String], (i:Map)[o:HashMap], (i:Connection)[o:JDBC4Connection]). Cause: java.lang.ClassNotFoundException: Unresolved external reference: java.lang.NoClassDefFoundError: Could not initialize class net.sf.jasperreports.engine.DefaultJasperReportsContext. — Unable to call the method, see the README section “Java platform issues” for details and DO NOT REPORT THIS PROBLEM TO THE PHP/Java Bridge MAILING LIST! VM: 1.7.0_25@http://java.oracle.com/
    at php.java.bridge.JavaBridge.getUnresolvedExternalReferenceException(JavaBridge.java:422)
    at php.java.bridge.JavaBridge.Invoke(JavaBridge.java:1055)
    at php.java.bridge.Request.handleRequest(Request.java:417)
    at php.java.bridge.Request.handleRequests(Request.java:500)
    at php.java.bridge.http.ContextRunner.run(ContextRunner.java:145)
    at php.java.bridge.ThreadPool$Delegate.run(ThreadPool.java:60)
    Caused by: java.lang.ClassNotFoundException: Unresolved external reference: java.lang.NoClassDefFoundError: Could not initialize class net.sf.jasperreports.engine.DefaultJasperReportsContext. — Unable to call the method, see the README section “Java platform issues” for details and DO NOT REPORT THIS PROBLEM TO THE PHP/Java Bridge MAILING LIST!
    … 6 more
    Caused by: java.lang.NoClassDefFoundError: Could not initialize class net.sf.jasperreports.engine.DefaultJasperReportsContext
    at net.sf.jasperreports.engine.JasperRunManager.getDefaultInstance(JasperRunManager.java:60)
    at net.sf.jasperreports.engine.JasperRunManager.runReportToPdfFile(JasperRunManager.java:693)
    at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
    at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:57)
    at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
    at java.lang.reflect.Method.invoke(Method.java:606)
    at php.java.bridge.JavaBridge.Invoke(JavaBridge.java:1044)
    … 4 more

    Que es lo que he echo mal o me falta?

    Con la version 3 me manda un documento en blanco “diciendo que ha habido un error con el PDF”

    Saludos y gracias.

  36. Saludos, alguien me puede ayudar, cuando trato de ejecutar el ejemplo de prueba que viene, me da el siguiente error,

    java stack trace : java.lang.Exception: Invoke failed: [[o:JasperRunManager]]->runReportToPdfFile((o:String)[o:String], (o:String)[o:String], (i:Map)[o:HashMap], (i:Connection)[o:String]). Cause: java.lang.IllegalArgumentException: argument type mismatch VM: 1.7.0_03@http://java.oracle.com/
    at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
    at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:57)
    at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
    at java.lang.reflect.Method.invoke(Method.java:601)
    at php.java.bridge.JavaBridge.Invoke(JavaBridge.java:1044)
    at php.java.bridge.Request.handleRequest(Request.java:417)
    at php.java.bridge.Request.handleRequests(Request.java:500)
    at php.java.bridge.http.ContextRunner.run(ContextRunner.java:145)
    at php.java.bridge.ThreadPool$Delegate.run(ThreadPool.java:60)
    Caused by: java.lang.IllegalArgumentException: argument type mismatch
    … 9 more

    el codigo de ejemplo es bien sencillo

    runReportToPdfFile($Reporte,$SalidaReporte,$Parametro,”);
    $jru->runReportToPdfFile($Reporte,$SalidaReporte,$Parametro,$Conexion->getConnection());

    ?>

    Es que estoy haciendo algo mal?
    Bye

  37. Excelente libreria!! me costó un poco d trabajo al principio y me tocó leer tu código para entenderla mejor y por ahí cambiar un par d lineas para mi uso, estoy probando la versión 1.0 y en los comentarios anteriores leí q tienes ya la versión 2 y 3, dond las puedo conseguir???? ahora la estoy usando n modo prueba pero realmente necesito integrarla con symfony2, podría colaborar con eso…

  38. Me da el mismo error que a @Raymundo Otano, tengo la ultima versión, estoy utilizando un *.jasper que cree con la consulta de ejemplo pgsql

Responder

Introduce tus datos o haz clic en un icono para iniciar sesión:

Logo de WordPress.com

Estás comentando usando tu cuenta de WordPress.com. Cerrar sesión / Cambiar )

Imagen de Twitter

Estás comentando usando tu cuenta de Twitter. Cerrar sesión / Cambiar )

Foto de Facebook

Estás comentando usando tu cuenta de Facebook. Cerrar sesión / Cambiar )

Google+ photo

Estás comentando usando tu cuenta de Google+. Cerrar sesión / Cambiar )

Conectando a %s