Vous êtes sur la page 1sur 5

Librera iText para la generacin de PDF dinmicos

Ing. Yasnay Hernndez Marrero, Dr. Joaqun Danilo Pina Amargos, Msc. Raisa Socorro Llanes, Ing. Joan Jaime Puldn
Resumen. En los proyectos de informatizacin de los ltimos aos, la generacin de reportes ha constituido una caracterstica esencial, con gran peso para la toma de decisiones. Compaas de gran prestigio han invertido en desarrollar herramientas que, de una forma amigable, permiten al usuario personalizar sus reportes e informes. Con estas bondades lo usuarios desconocen qu hay dentro de esas herramientas o cules son las libreras ms importantes que fueron utilizadas. En este trabajo se dan a conocer los mtodos y caractersticas significativas de iText, una de las libreras Java ms utilizadas para la generacin de reportes e informes. Se destacan las bondades siguientes: creacin del documento, formas de visualizacin, organizacin por secciones, captulos, utilizacin de diferentes tipologas de letras, insercin de tablas, imgenes y otros. iText es una de las libreras que sin intermedio de herramientas de diseo, al ser utilizada directamente mantiene gran parte de sus potencialidades.
TABLA I [1] a) PROBLEMAS HABITUALES AL TRABAJR CON FICHEROS

Palabras Claves. iText, PDF dinmicos, reportes

I. INTRODUCCIN
b) SOLUCIONES QUE BRINDA EL FORMATO PDF

En los ltimos aos, la generacin dinmica de documentos ha ido en aumento. Cada vez ms proyectos incorporan esta variante como una caracterstica indispensable para distribuir mejor sus datos y realizar anlisis de negocios. La lnea de generar documentos en formato de extensin PDF (Formato de Documento Porttil) ha sido altamente aceptada. Este es un formato estandarizado a nivel internacional en el uso de documentacin. Para la interpretacin de este formato existen varios programas gratuitos. Esto hace al documento altamente portable, fcil de leer e imprimir, adems de no ser fcilmente modificable por el portador. En la Tabla.1 podemos observar los problemas principales que nos pueden surgir a la hora de tratar con ficheros y las soluciones que proporciona el formato PDF para evitarlos, que le convierten en uno de los formatos de archivo ms estables y, por tanto, en uno de los ms utilizados.

CCIA2008 Prcticamente todas las herramientas para la generacin de documentos dan la posibilidad de generar archivos de extensin PDF. Algunas de estas herramientas son: - JasperReports - iReport - CrystalReport (http://www.spain.businessobjects.com/ ) - Oracle XML Publisher (http://www.oracle.com/ ) - entre otras Ahora bien, as como existen numerosas herramientas para generar documentos PDF, es necesario conocer que prcticamente todas las que estn soportadas con el lenguaje Java, utilizan la misma librera, iText. Al delegarse las responsabilidades en las herramientas de ayuda al diseo de los documentos, por lo general se desconoce las bondades de la utilizacin directa de esta librera. iText es una poderosa librera Java de cdigo abierto que soporta la generacin de documentos HTML, RTF y XML, adems de documentos PDFs. Est disponible en Lowagie.com. (Descargar en http://www.lowagie.com/iText/download.html ). Cuenta con gran variedad de fuentes que pueden ser utilizados en el cuerpo del documento. Adems la estructura de iText permite generar cualquiera de los mencionados tipos de documentos (HTML, RTF, XML y PDF) con el mismo cdigo. iText es una librera que contiene clases para generar documentos PDF con diferentes fuentes, generar tablas, establecer marcas de agua, etc. Acerca de API iText com.lowagie.text.Document -- es la clase principal para la generacin de documentos PDF. Esta es la primera clase que es instanciada. Una vez que el documento es creado, se deber proceder a escribir dentro de l. com.lowagie.text.pdf.PdfWriter -- es la clase que permite escribir en el PDF. Otras de las libreras ms utilizadas son: com.lowagie.text.Paragraph -- es la clase que representa el prrafo a escribir. com.lowagie.text.Chapter es la clase que representa un captulo en el documento PDF. Este es creado utilizando un prrafo como ttulo y un entero como nmero del captulo. com.lowagie.text.Font esta clase contiene todas las especificaciones de las fuentes, tamaos, estilos y colores de las letras a utilizar en el documento. Varias de las fuentes son declaradas estticamente en esta clase. II. PASOS PARA CREAR UN PDF Instanciando el documento Al instanciar un documento se debe especificar las

caractersticas del diseo de pgina, que incluye tanto el tamao como la distribucin de los mrgenes. En la Fig.1 se observa cmo se instancia el documento con los siguientes valores: - mydocument es la instancia del documento con que se trabajar. - los argumentos del constructor Document(PageSize.A4, 50, 50, 50, 50); son el tamao de la pgina, y luego estn los mrgenes izquierdo, derecho, superior e inferior respectivamente.

Figura 1 Instanciando el documento

El tipo de documento no es definido aun, esto depende del escritor que se cree. PdfWriter para los PDF, RtfWriter para los RTF y as sucesivamente. Los nombres de los escritores identifican los propsitos para los que son creados. Creando el escritor PdfWriter La librera iText para la visualizacin de los documentos utiliza la interfaz PdfWriter. Al crear el escritor existen dos alternativas. 1. Crearlo para que el PDF sea guardado en una direccin especfica de la mquina. Ver Fig.2.

Figura 2 Documento guardado en la direccin especificada

En la Fig.2 se muestra un ejemplo donde se almacena el PDF con el nombre iText, en la raz del directorio C. Nota: El escritor PdfWriter exige la captura de la excepcin DocumentException y por otra parte FileOutputStream exige la captura de FileNotFoundException. 2. Crearlo para que sea mostrado al usuario en una pgina de la misma aplicacin.

Figura 3 Visualizacin del documento en una pgina cualquiera

En la Fig.3 el PDF se generar en una pgina cualquiera y deber ser guardado fsicamente en alguna direccin de memoria que el usuario desee. Debern importarse o incluirse:

CCIA2008 import javax.faces.context.FacesContext en el proyecto debe incluirse la librera JSF import javax.servlet.http.HttpServletResponse en el proyecto debe incluirse la librera JSP Runtime

Nota: La sentencia response.getOutputStream() exige la captura de la excepcin IOException. Abriendo el documento Una vez configurada la estructura del documento y antes de escribir en l, es necesario ejecutar la instruccin que muestra la Fig.4. Esto posibilitar que todos los prrafos, tablas y figuras que se deseen introducir en el documento, sean incorporados correctamente.
Figura 7 Creando secciones dentro del captulo Figura 4 Abrir el documento

Creando y Adicionando prrafos iText posibilita la creacin de prrafos y su consiguiente incorporacin en el documento. En la Fig.5 el constructor del prrafo tiene como argumentos, el texto del prrafo y la tipologa que se desea.

Adicionando tablas Las tablas con el iText son escritas por filas corridas, no es posible ubicar fila y columna, por lo que es importante a la hora de escribir los datos, hacer pases corridos teniendo claro el tamao de la tabla. Para escribir en las tablas no es necesario conocer la cantidad de filas que posee, pero si las columnas. En la Fig.8 se construye una tabla de tres columnas y solamente se incorpora una fila que sera una especie de encabezamiento a la tabla. Nota: Se necesitan importar la interfaces o librera asociada a PdfPTable.

Figura 5 Creando y escribiendo prrafos

Cuando se adiciona se escribe en el documento el prrafo creado y de esta forma se incorpora en el documento. Nota: Para esta seccin se debern importar las libreras relacionadas con Paragraph, FontFactory, Font and Color. Creando captulos Para crear captulos solamente es necesario declararlo e importar la librera correspondiente Ver Fig.6.
Figura 8 Creando la tabla deseada

Para adicionar la tabla al captulo se utiliza la sentencia mostrada en la Fig.9.

Figura 6 Nombrando y creando captulos

Figura 9 Adicionando la tabla al captulo

Creando una seccin dentro del captulo Al igual que los captulos, las secciones al ser declaradas deben tener un ttulo, por tal motivo en la Fig.7 se crea el nombre de la seccin y a continuacin, se crea la misma.

Cuando se crean las tablas, al definir las columnas debe tenerse en cuenta que, este valor es fijo, y una vez creado no podr ser modificado. En el ejemplo de la Fig.8 se tienen solo tres columnas y solo hay una fila, pero se pudieran incluir cualquier cantidad de filas ms, cada una con tres elementos.

CCIA2008 Adicionando el Captulo y Cerrando el documento Una vez concluida todas las modificaciones al captulo es necesario incluirlo en el documento y en este caso que no se desea realizar ninguna otra operacin, se deber cerrar. En la Fig.10 se muestran ejemplos de ambas instrucciones.

En la Fig.12 se introducen dos lneas, una debajo de la otra. La tipologa es negrita y estn centradas.

Figura 10 Adicionando el captulo y cerrando el documento

Otras recomendaciones Antes de construir el documento, se debe crear una clase general que contenga la informacin que desea plasmar en el mismo, atendiendo a la estructura que desea. Llame al mtodo de crear el documento, pasndole en cada prrafo, los datos de la clase.

Figura 12 Ejemplo de espaciado y alineacin

Nota: En los textos a introducir, el enter o lo que es lo mismo, el salto a la lnea siguiente se realiza con la notacin \n. 3. Fecha y hora actual Es posible que sea de inters para algunos usuarios que la fecha y hora actual queden reflejadas en el documento que se emite. Existen mltiples formatos que permiten introducir estos datos. Calendar, GregorianCalendar y DateFormat son libreras de Java que permiten obtener y manipular los formatos de las fechas (especialmente la actual). En la Fig.13 se muestran los diferentes formatos que se le pueden dar a la fecha. Estos son: Pequeo(SHORT) 21/07/08 Medio(MEDIUM) 21-jul-2008 Largo(LONG) 21 de julio de 2008 Completo(FULL) lunes, 21 de julio de 2008

Otros elementos y caractersticas que pueden ser utilizados al crear un PDF 1. Adicionando una imagen Para adicionar una imagen en el documento deben analizarse las caractersticas de la misma y establecer su ubicacin y tamao. Este ltimo se considerar un porciento especfico de la escala real. En la Fig.11 se muestran las instrucciones necesarias para insertar la imagen.

Figura 11 Insertando una imagen en el documento

Nota: En el ejemplo de la Fig.11, la imagen se encuentra en una ubicacin especfica de la mquina. 2. Espaciado y alineacin de objetos (prrafos) Cualquier objeto que se introduzca en el documento puede utilizar los mtodos: - setSpacingAfter(Number); que permite establecer el espaciado posterior al objeto. - setSpacingBefore(Number); referente al espaciado anterior al objeto. - setAlignment(Element.ALIGN_CENTER) que permite la alineacin del objeto en el documento. Pueden ser a la izquierda, derecha o centrado.

Figura 13 Utilizacin de la fecha y hora actual

CCIA2008 III. RESULTADOS Siguiendo las indicaciones descritas en los apartados anteriores se obtiene un documento PDF similar al que se muestra a continuacin. En la primera pgina aparecer un prrafo y la estructura ser similar a la siguiente:

grandes potencialidades. Su utilizacin para la creacin de reportes e informes simples es fcil. Este hecho permite prescindir de la utilizacin de herramientas complejas que a pesar de facilitar el diseo de los reportes, aumenta el costo de los proyectos. V.
REFERENCIAS

[1] jMSC. Herramienta CASE para el desarrollo de Asistentes de Navegacin Web. Proyecto Fin de Carrera I.T.Telecomunicaciones:Telemtica. Daniel Lastra Rodrguez. Escuela Politcnica Superior Universidad Carlos III de Madrid. (julio2004). Consultado septiembre/2008. VI.
BIBLIOGRAFIA

Figura 14 Primera pgina de un documento PDF creado dinmicamente.

Una segunda pgina donde se pudiera ver la organizacin del documento en captulos y secciones, pudiera ser, la siguiente, atendiendo a los ejemplos realizados a lo largo del artculo.

- Sitio de iText. http://www.lowagie.com/iText/ Consultado (abril/2008). Son varios ejemplos que aparecen en el sitio, que referencian el libro de iText in Action. - Sitio de ibm. http://www.ibm.com Generate PDF files from Java applications dynamically (enero/2006) Consultado (abril/2008). - Transauto. Sistema de Gestin Informatizada de las Bases de Transporte del Ministerio de Educacin Superior. Trabajo de diploma para optar por el ttulo de Ingeniera en Informtica. ISPJAE. Milena Ramos Prez (Graduacin 2006-2007) Consultado septiembre/2008.

Figura 15 Organizacin del documento en captulos y secciones

IV. CONCLUSIONES iText es una librera de Java de fcil manejo pero con

Vous aimerez peut-être aussi