You are on page 1of 13

PHP-JRU

PHP JapserReport Utils Autor: Robert Bruno Version 0.1

PHP-RU Manual de uso

PHP JapserReport Utils Robert Bruno Version 0.1

This library is free software; you can redistribute it and/or modify it under the terms of the GNU Lesser General Public License as published by the Free Software Foundation; either version !" of the License# or $at your option% any later version! This library is distributed in the hope that it will be useful# but &'T()UT *N+ &*,,*NT+; without even the implied warranty of -.,/(*NT*0'L'T+ or F'TN.SS F), * P*,T'/UL*, PU,P)S.! See the GNU Lesser General Public License for more details! +ou should have received a copy of the GNU Lesser General Public License alon1 with this library; if not# write to the Free Software Foundation# 'nc!# 23 Temple Place# Suite 445# 0oston# -* 5 """6"457 US* /opy of GNU Lesser General Public License at8 http8//www!1nu!or1/copyleft/lesser!t9t /ontact author at8 robert!ale9ander!bruno:1mail!com

PHP-RU Manual de uso

ndice de contenido " 'ntroducci;n "!" Sobre este manual "! <=ue es P(P6>,U? /onfi1urando P(P6>,U !" ,e@uisitos! !"!" >ava/0rid1e !"!"!" <Por@ue usar >ava/0rid1e? !"!"! 'nstalando >*A*/0rid1e en Linu9 !"!"!4 'nstalando >*A*/0rid1e en &indows ! LibrerBas y archivos Car ! !" >asper ,eport ! ! /onectores >D0/ 4 i,eport 4!" Descar1ar i,eport E Usando P(P6>,U E!" /ar1ar librerBas E! /one9iones Cdbc! E!4 'ndicando parFmetros! E!E Generar un pdf E!2 'ndicar sentencia s@l

PHP-RU Manual de uso

"
1.1 Sobre este manual

'NT,)DU//')N

La intensi;n de este manual es poder dar una orientaci;n en el uso de >,U y dar un conocimiento bFsico de las herramientas @ue se necesitan para 1enerar reportes con >,U! .s necesario saber @ue el contenido de este manual puede perder su valideG con el tiempo# debido a los cambios en el desarrollo y e9pectativas a futuro de >,U! *un@ue se e9plica ciertas cosas bFsica sobre las herramientas de >asper ,eport se da por entendido @ue el usuario de >,U ya ha usado con anterioridad y de manera e9itosa dichas herramientas!

1.

!"ue es PHP-JRU#
P(P6>,U $P(P >asper ,eport Utils% es una librerBa de poca compleCidad @ue permite 1enerar reportes diseHados baCo la herramienta i,eport desde una simple aplicaci;n escrita en P(P! Para esto >,U se comunica con la >A- a travIs de >ava/0rid1e# y de esta manera poder car1ar las librerBas provista por >asper,eport he indicarle las tareas @ue deben realiGarse para 1enerar los reportes tal cual como si se estuviera haciendo desde una aplicaci;n escrita en Cava! *l especificar @ue es de poca compleCidad es por@ue su estructura fBsica consta solo de dos archivos y una carpeta con los Car necesarios# por ende su compleCidad es mas te;rica @ue prFctica!

PHP-RU Manual de uso

/)NF'GU,*ND) P(P6>,U .1 Re$uisitos


*ctualmente >,U realiGa la labor de comunicarse con la -a@uina Airtual de >ava y car1ar los Car @ue contienen >asper,eport por ende depende de >A- y de las LibrerBas >asper,eport para poder 1enerar un reporte! Por lo @ue serF necesario e9plicar cono enlaGar estos elementos!

.1.1 Ja%a&Brid'e
P(P / >ava 0rid1e es un puente basado en protocolo de red J-L# @ue puede ser usado para conectar el motor de script nativo de P(P con >ava o la mF@uina virtual ./-* 442! P(P / >ava 0rid1e permite a los desarrolladores el acceso de clases >ava en P(P! TambiIn permite el acceso a los scripts P(P dentro de clases >ava! Debido a esta interoperabilidad# los desarrolladores pueden desarrollar pF1inas web interactivas utiliGando P(P# pero dele1ar funciones en clases >ava# lo @ue permite usar cada tecnolo1Ba por sus puntos fuertes y eludir sus puntos dIbiles!

.1.1.1 !Por$ue usar Ja%a&Brid'e#


Por los momentos es la tecnolo1Ba @ue nos permite @ue >,U funcione! Dentro de las e9pectativas futuras se pretende dar soporte nativo para @ue desde P(P se pueda leer el diseHo del reporte y 1enerarlo de forma directa sin la mediaci;n de >ava/0rid1e!

.1.1.

(nstalar Ja%a Brid'e en )inu*

.l proceso lo haremos desde una consola# para compilar el modulo de php hace falta tener instalado la >ava Airtual -achine y las librerBas de desarrollo de php# en Debian GNU/Linu9 se harBa de la si1uiente forma8
Kapt61et install php26dev Kapt61et install automaLe"!3 Kupdate6alternatives 66confi1 automaLe Kapt61et install sun6CavaM6Cre
N6 obvie este paso si ya tiene la >A- instalada%

Descar1ue las fuentes de >*A*/0,'DG. de la si1uiente U,L


http8//php6Cava6brid1e!sourcefor1e!net/doc/download!php

PHP-RU Manual de uso

Kcd O()-. Kw1et http8//downloads!sourcefor1e!net/php6Cava6brid1e/php6Cavabrid1eP2! ! !tar!1G

descomprima las fuentes


Ktar 69vvGf php6Cava6brid1eP2! ! !tar!1G Kcd php6Cava6brid1e62! ! / Ke9port >*A*P()-.QR/usr/local/CdL"!M!5P54/R N6 colo@ue la ruta de la >AK phpiGe SS !/confi1ure 66with6CavaQO>*A*P()-. SS maLe; maLe install

*hora modifica el php!ini y a1re1ue la si1uiente linea en la secci;n de e9tensiones dinFmicas!


e9tensionQ Cava!so

,einicie el servidor web


K /etc/init!d/apache restart

.1.1.+ (nstalar Ja%a Brid'e en ,indo-s


Las versiones de php para windows suelen traer el modulo y lo @ue hay @ue hacer es habilitarlo y especificar la si1uiente secci;n en el php!ini
TCavaU Cava!CavaPhome Q R/8VPro1ram FilesV>avaVCdL"!2!5P"5VbinR Cava!Cava Q R/8VPro1ramFilesV>avaVCdL"!2!5P"5VbinVCavaw!e9eR

Guardar los cambios y reiniciar el servidor web# por supuesto hay @ue tener la >A- instalada y se debe colocar la ruta especifica para su >A-

)ibreras . arc/i%os 0ar


/omo ya se ha mencionado anteriormente es necesario el uso de >asper,eport asB como tambiIn el conCuntos de Car @ue se re@uieran se1Wn la estructura y elementos del archivo 9ml @ue contiene el diseHo# por eCemplo si los datos se obtendrFn de -yS=L sera necesario car1ar el driver Cdbc para realiGar la cone9i;n# o si se re@uiere colocar una ima1en con formato pn1 sera necesario car1ar el maneCador de imF1enes pn1!

PHP-RU Manual de uso

. .1 Jasper Report
>asper,eports es una poderosa herramienta open source para 1enerara reportes @ue tiene la capacidad para 1enerar contenido enri@uecido en la pantalla# a la impresora# o en PDF# (T-L# JLS# ,TF# )DT# /SA# TJT y archivos J-L! .stF escrito completamente en >ava y puede ser utiliGado en una 1ran variedad de aplicaciones para 1enerar contenido dinFmico! >asper,eports or1aniGa los datos recuperados de una DataSource# se1Wn el diseHo definido en un archivo >,J-L! /on el fin de llenar el reporte con los datos# el diseHo del reporte debe ser compilado primero# 1enerando un archivo Casper! /omo se mencion; anteriormente# el diseHo de un reporte representa una plantilla @ue es utiliGada por el motor de >asper,eports para ofrecer contenido dinFmico a la impresora# la pantalla o en la &eb! Los datos almacenados en la base de datos serFn or1aniGados de acuerdo con el diseHo del reporte @ue esta definido en archivos >,J-L y debe tener una estructura especial! .sta estructura se declara en un archivo DTD suministrado con el motor de >asper,eports! Los archivos >,J-L son compilados# con el fin de utiliGar en el reporte las operaciones de llenado ! Para crear un diseHo de reporte# tenemos @ue editar un archivo J-L con la si1uiente estructura8

N?9ml version Q R"!5R?X NY D)/T+P. Casper,eport PU0L'/ R6 / / >asper,eports / / DTD 'nforme de DiseHo / / .NR Rhttp8//Casperreports!sourcefor1e!net/dtds/Casperreport!dtdRX NCasper,eport name Q RnamePofPthePreportR !!! X !!! N/ Casper,eportX

Para tener una meCor comprensi;n de la estructura de un archivo >,J-L# es recomendable utiliGar la re1encia rFpida de >asper,eport! Para usar >,U se debe tener una carpeta con todas la librerBas necesaria de >asper,eport# se tendrF disponible para la descar1a un archivo comprimido con las librerBas completas y otro solo con Cru!

PHP-RU Manual de uso

. .

1onectores J2B1

Java Database Connectivity# mFs conocida por sus si1las J2B1# es una *P' @ue permite la eCecuci;n de operaciones sobre bases de datos desde el len1uaCe de pro1ramaci;n >ava independientemente del sistema operativo donde se eCecute o de la base de datos a la cual se accede utiliGando el dialecto S=L del modelo de base de datos @ue se utilice! .l *P' >D0/ se presenta como una colecci;n de interfaces >ava y mItodos de 1esti;n de maneCadores de cone9i;n hacia cada modelo especBfico de base de datos! Un maneCador de cone9iones hacia un modelo de base de datos en particular es un conCunto de clases @ue implementan las interfaces >ava y @ue utiliGan los mItodos de re1istro para declarar los tipos de localiGadores a base de datos $U,L% @ue pueden maneCar! Para utiliGar una base de datos particular# el usuario eCecuta su pro1rama Cunto con la librerBa de cone9i;n apropiada al modelo de su base de datos# y accede a ella estableciendo una cone9i;n# para ello provee en localiGador a la base de datos y los parFmetros de cone9i;n especBficos! * partir de allB puede realiGar con cual@uier tipo de tareas con la base de datos a las @ue ten1a permiso8 consulta# actualiGaci;n# creaci;n# modificaci;n y borrado de tablas# eCecuci;n de procedimientos almacenados en la base de datos# etc! /ada fabricante de ,D0-S es el responsable de ofrecer el conector >D0/ # por eCemplo# si se va ha utiliGar post1res el conector para realiGar la cone9i;n con la base de datos debe descar1arse de la pa1ina web de Post1res y para usarlo con >,U debe copiarse en la carpeta @ue contiene las librerBas Cava para @ue de esta manera puedan car1arse! Para esto >,U provee de un mItodo @ue permite car1ar la contenidas dentro de un directorio! librerBas

PHP-RU Manual de uso

(R3P4R5

i,eport es un aplicaci;n @ue ayuda en el diseHo visual de reportes a los usuarios y desarrolladores @ue utiliGan las librerBas >asper,eports! * travIs de una interfaG de usuario rica y muy fFcil de usar # i,eport proporciona todas las funciones mFs importantes para crear reportes a1radables en poco tiempo! i,eport puede ayudar a las personas @ue no conocen las librerBas >asper,eports a crear reportes compleCos sin conocer la sinta9is J-L! i,eport estF escrito en >ava y a partir de la version 5! !5 fue totalmente reescrito! Por esta raG;n# hay dos manuales de i,eport! La si1uiente lista describe al1unas de las caracterBsticas mas importantes de i,eport8

Soporta 3Z[ de las eti@uetas de >asper,eports! DiseHador Aisual $wysiwy1% con herramientas para dibuCar rectFn1ulos# lBneas# elipses# campos de te9to# 1rFficos# subreports !!! 'ncorpora editor con sinta9is hei1hli1htin1 para escribir e9presiones! Soporte para Unicode y idiomas no latBn $ruso# chino# coreano #!!!%! 'nte1ra un compilador! Soporta todas las bases de datos compatible con >D0/ *poyo de todo tipo de >,DataSource *sistente para crear reportes automFticamente! Soporta subreports! Guardar copias de se1uridad! Soporte plantillas!

+.1 2escar'ar iReport


i,eport se puede descar1ar de la pa1ina de SourceFor1e en la si1uiente U,L
http://sourceforge.net/project/showfiles.php?group_id=64348

Se ofrecen varias versiones depende de usted descar1ar la @ue mas le conven1a# obviamente es recomendable descar1ar la mas reciente!

PHP-RU Manual de uso

USA624 PHP-JRU

>,U es absolutamente sencilla# consta tan solo de dos archivos para realiGar su labor! Se encuentra disponible para la descar1a en dos presentaciones# una empa@uetada con las librerBas >asper,eport necesarias y otra solo con >,U# esta Wltima para los usuarios @ue ya ten1a a su alcance >asper,eport en su versi;n de preferencia! *dicionalmente podrF descar1ar eCemplos y el presente manual de uso! *ctualmente >,U solo se encar1a de 1enerar reportes en formato pdf# esto es por@ue en un futuro las e9pectativas de >,U son las de crear un motor propio para interpretar el diseHo contenido en un Cr9ml y lue1o 1enerar reportes en los diversos formatos# por ende se debe entender a >,U como una transici;n a un soporte verdadero de >asper,eport desde P(P! Los dos archivos @ue contiene >,U son los si1uientes JdbcConnection.php y php jru.php.

JdbcConnection.php contiene la clase JdbcConnection la cual se encarga de crear conexiones jdbc a la base de datos para crear el origen de los datos. php-jru.php contiene la clase JRU que permite generar reportes en archivos pdf segn el diseo especificado en un jrxml dicha clase se vale de ciertos m!todos para indicar diferentes par"metros entre los cuales se encuentran la sentencia sql con la que sera rellenado el reporte.

7.1 1ar'ar libreras


*ntes de usar >,U es necesario car1ar las librerBas de >asper,eport asB como tambiIn las @ue sean necesarias# como pudieran ser los driver >D0/# para esto solo es necesario copiar en una carpeta todos los Car e indicarle a travIs de c;di1o a >,U @ue car1ue el contenido de dicha carpeta de las si1uiente manera8 /\\ \ crea una instancia php6Cru \ \/ !jru = new J"#$%& /'' ' c(rg( l(s libreri(s ' '/ !jru )lo(d*ir+ibr(r,$"workspace/jars/"%& *onde "workspace/jars/" es la ruta donde se encuentran las libreras

PHP-RU Manual de uso

10

7.

1one*iones 0dbc.

/omo ya se ha comentado anteriormente es necesario crea una cone9i;n Cdbc para acceder a la base de datos! Para realiGar esto >,U provee de la clase >dbc/onnection @ue nos permitirF hacerlo de la si1uiente manera8
/\\ \ incluye >,U

\ \/
re-uire $.../../php jru.php.%&

/\\ \ crea una instancia de >dbc/onnection

\ \/
$conn = new JdbcConnection("org.postgresql.#river$ "databsaename$ "user$ "password$%& Donde org.postgresql.#river indica el driver jdbc que sera usado

7.+ (ndicando par8metros


Un aspectos para tener en cuenta siempre es @ue se esta trabaCando con tecnolo1Ba Cava# por lo @ue todo esta suCeto a las especificaciones de dicho len1uaCe# incluso los parFmetros @ue se le pasen al reporte por lo @ue habrF @ue indicar dichos parFmetros usando directamente un (ash-ap de >ava de la si1uiente manera8
/\\ \ 'ndica los parametros del reporte \ \/

'parameters ( new java )$java.util.*ash+ap$%& 'parameters-,put)$moneda$ -%& 'parameters-,put)$cargo$ $gerente$%&

.n dado caso @ue no se le deseen pasar parFmetros al reporte debemos indicar de todos modos la declaraci;n de la variable8
'parameters ( new java )$java.util.*ash+ap$%&

PHP-RU Manual de uso

11

7.7 9enerar un pd:


* continuaci;n se mostrarF una porci;n de c;di1o prototipo de como se 1enera un pdf con >,U8
/\\ \ incluye >,U

\ \/
re-uire $.../../php jru.php.%&

/\\ \ crea una instancia de >dbc/onnection

\ \/
$conn = new JdbcConnection("org.postgresql.#river$ "databsaename$ "user$ "password$%&

/\\ \ 'ndica los parametros del reporte \ \/

'parameters ( new java )$java.util.*ash+ap$%&

/\\ \ 1enera un pdf usando el !Casper \ \/ 'jru6Xrun,eportToPdfFile$$reporte.jasper$#$reporte.pdf$#'parameters#'conn%;

Donde $reporte.jasper$ es la ruta completa del reporte compilado $reporte.pdf$ es la ruta completa del pdf a generar que si se encuentra vac.a el pdf sera generado en el mismo directorio del reporte jasper 'parameters son los par"metros que se le entregaran al reporte / 'conn es la conexi0n a la base de datos.

PHP-RU Manual de uso

12

7.; (ndicar sentencia s$l

* continuaci;n se mostrarF una porci;n de c;di1o prototipo de como se 1enera un pdf con >,U indicando la sentencia s@l con la @ue se rellenara el reporte8 /\\ \ incluye >,U

\ \/
re-uire $.../../php jru.php.%&

/\\ \ crea una instancia de >dbc/onnection

\ \/
$conn = new JdbcConnection("org.postgresql.#river$ "databsaename$ "user$ "password$%&

/\\ \ indica la sentencia s@l

\ \/
$sql = "select ield!" ield# .. rom table w$ere conditions$&

/\\ \ 'ndica los parametros del reporte \ \/

'parameters ( new java )$java.util.*ash+ap$%&

/\\ \ 1enera un pdf usando el !Casper \ \/ 'jru6Xrun,eportFromS@l$$reporte.jasper$#$reporte.pdf$#'parameters#'sql 'conn%; Donde $reporte.jasper$ es la ruta completa del reporte compilado
$reporte.pdf$ es la ruta completa del pdf a generar que si se encuentra vac.a el pdf sera generado en el mismo directorio del reporte jasper 'parameters son los par"metros que se le entregaran al reporte 'sql inidica la sentencia sql que rellenara el reporte / 'conn es la conexi0n a la base de datos.

PHP-RU Manual de uso

13

You might also like