Está en la página 1de 5

Librería iText para la generación de PDF dinámicos

Ing. Yasnay Hernández Marrero, Dr. Joaquín Danilo Pina Amargos, Msc. Raisa Socorro Llanes, Ing. Joan Jaime
Puldón

Resumen. En los proyectos de informatización de los últimos TABLA I [1]


años, la generación de reportes ha constituido una característica a) PROBLEMAS HABITUALES AL TRABAJR CON FICHEROS
esencial, con gran peso para la toma de decisiones. Compañías 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 cuáles son las librerías
más importantes que fueron utilizadas. En este trabajo se dan a
conocer los métodos y características significativas de iText, una
de las librerías Java más utilizadas para la generación de
reportes e informes. Se destacan las bondades siguientes:
creación del documento, formas de visualización, organización
por secciones, capítulos, utilización de diferentes tipologías de
letras, inserción de tablas, imágenes y otros. iText es una de las
librerías que sin intermedio de herramientas de diseño, al ser
utilizada directamente mantiene gran parte de sus
potencialidades.

Palabras Claves. iText, PDF dinámicos, reportes

I. INTRODUCCIÓN
b) SOLUCIONES QUE BRINDA EL FORMATO PDF
En los últimos años, la generación dinámica de documentos
ha ido en aumento. Cada vez más proyectos incorporan esta
variante como una característica indispensable para distribuir
mejor sus datos y realizar análisis de negocios. La línea de
generar documentos en formato de extensión PDF (Formato
de Documento Portátil) ha sido altamente aceptada. Este es un
formato estandarizado a nivel internacional en el uso de
documentación. Para la interpretación de este formato existen
varios programas gratuitos. Esto hace al documento altamente
portable, fácil de leer e imprimir, además de no ser fácilmente
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 más estables
y, por tanto, en uno de los más utilizados.
CCIA’2008 2

Prácticamente todas las herramientas para la generación de características del diseño de página, que incluye tanto el
documentos dan la posibilidad de generar archivos de tamaño como la distribución de los márgenes.
extensión PDF. Algunas de estas herramientas son:
- JasperReports En la Fig.1 se observa cómo se instancia el documento con los
- iReport siguientes valores:
- CrystalReport (http://www.spain.businessobjects.com/ ) - mydocument es la instancia del documento con que se
- Oracle XML Publisher (http://www.oracle.com/ ) trabajará.
- entre otras - los argumentos del constructor
Ahora bien, así como existen numerosas herramientas para Document(PageSize.A4, 50, 50, 50, 50); son el
generar documentos PDF, es necesario conocer que tamaño de la página, y luego están los márgenes
prácticamente todas las que están soportadas con el lenguaje izquierdo, derecho, superior e inferior
Java, utilizan la misma librería, iText. Al delegarse las respectivamente.
responsabilidades en las herramientas de ayuda al diseño de
los documentos, por lo general se desconoce las bondades de
la utilización directa de esta librería.
Figura 1 Instanciando el documento
iText es una poderosa librería Java de código abierto que
soporta la generación de documentos HTML, RTF y XML, El tipo de documento no es definido aun, esto depende del
además de documentos PDFs. Está disponible en escritor que se cree. PdfWriter para los PDF, RtfWriter para
Lowagie.com. (Descargar en los RTF y así sucesivamente. Los nombres de los escritores
http://www.lowagie.com/iText/download.html ). identifican los propósitos para los que son creados.
Cuenta con gran variedad de fuentes que pueden ser
utilizados en el cuerpo del documento. Además la estructura
de iText permite generar cualquiera de los mencionados tipos Creando el escritor PdfWriter
de documentos (HTML, RTF, XML y PDF) con el mismo
código. La librería iText para la visualización de los documentos
iText es una librería que contiene clases para generar utiliza la interfaz PdfWriter.
documentos PDF con diferentes fuentes, generar tablas,
establecer marcas de agua, etc. Al crear el escritor existen dos alternativas.
1. Crearlo para que el PDF sea guardado en una
Acerca de API iText dirección específica de la máquina. Ver Fig.2.
• com.lowagie.text.Document -- es la clase principal
para la generación de documentos PDF. Esta es la
primera clase que es instanciada. Una vez que el
documento es creado, se deberá proceder a escribir Figura 2 Documento guardado en la dirección especificada
dentro de él.
• com.lowagie.text.pdf.PdfWriter -- es la clase que En la Fig.2 se muestra un ejemplo donde se almacena el PDF
permite escribir en el PDF. con el nombre iText, en la raíz del directorio C.

Nota: El escritor PdfWriter exige la captura de la excepción


Otras de las librerías más utilizadas son: DocumentException y por otra parte FileOutputStream exige
la captura de FileNotFoundException.
• com.lowagie.text.Paragraph -- es la clase que
representa el párrafo a escribir. 2. Crearlo para que sea mostrado al usuario en una
• com.lowagie.text.Chapter – es la clase que página de la misma aplicación.
representa un capítulo en el documento PDF. Este
es creado utilizando un párrafo como título y un
entero como número del capítulo.
• com.lowagie.text.Font – esta clase contiene todas
las especificaciones de las fuentes, tamaños, estilos
y colores de las letras a utilizar en el documento.
Varias de las fuentes son declaradas estáticamente
en esta clase. Figura 3 Visualización del documento en una página cualquiera

II. PASOS PARA CREAR UN PDF En la Fig.3 el PDF se generará en una página cualquiera y
deberá ser guardado físicamente en alguna dirección de
Instanciando el documento memoria que el usuario desee.

Al instanciar un documento se debe especificar las Deberán importarse o incluirse:


CCIA’2008 3

- import javax.faces.context.FacesContext
- en el proyecto debe incluirse la librería JSF
- import javax.servlet.http.HttpServletResponse
- en el proyecto debe incluirse la librería JSP Runtime

Nota: La sentencia “response.getOutputStream()” exige la


captura de la excepción IOException.
Abriendo el documento

Una vez configurada la estructura del documento y antes de


escribir en él, es necesario ejecutar la instrucción que muestra
la Fig.4. Esto posibilitará que todos los párrafos, tablas y
figuras que se deseen introducir en el documento, sean
incorporados correctamente.

Figura 7 Creando secciones dentro del capítulo


Figura 4 Abrir el documento

Adicionando tablas
Creando y Adicionando párrafos
Las tablas con el iText son escritas por filas corridas, no es
iText posibilita la creación de párrafos y su consiguiente posible ubicar fila y columna, por lo que es importante a la
incorporación en el documento. hora de escribir los datos, hacer pases corridos teniendo claro
el tamaño de la tabla. Para escribir en las tablas no es
En la Fig.5 el constructor del párrafo tiene como argumentos, necesario conocer la cantidad de filas que posee, pero si las
el texto del párrafo y la tipología que se desea. columnas. En la Fig.8 se construye una tabla de tres columnas
y solamente se incorpora una fila que sería una especie de
encabezamiento a la tabla.

Nota: Se necesitan importar la interfaces o librería asociada a


Figura 5 Creando y escribiendo párrafos PdfPTable.

Cuando se adiciona se escribe en el documento el párrafo


creado y de esta forma se incorpora en el documento.

Nota: Para esta sección se deberán importar las librerías


relacionadas con Paragraph, FontFactory, Font and Color.

Creando capítulos

Para crear capítulos solamente es necesario declararlo e


importar la librería correspondiente Ver Fig.6.
Figura 8 Creando la tabla deseada

Para adicionar la tabla al capítulo se utiliza la sentencia


mostrada en la Fig.9.

Figura 6 Nombrando y creando capítulos Figura 9 Adicionando la tabla al capítulo

Cuando se crean las tablas, al definir las columnas debe


Creando una sección dentro del capítulo 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
Al igual que los capítulos, las secciones al ser declaradas tres columnas y solo hay una fila, pero se pudieran incluir
deben tener un título, por tal motivo en la Fig.7 se crea el cualquier cantidad de filas más, cada una con tres elementos.
nombre de la sección y a continuación, se crea la misma.
CCIA’2008 4

Adicionando el Capítulo y Cerrando el documento


En la Fig.12 se introducen dos líneas, una debajo de la otra.
Una vez concluida todas las modificaciones al capítulo es La tipología es negrita y están centradas.
necesario incluirlo en el documento y en este caso que no se
desea realizar ninguna otra operación, se deberá cerrar. En la
Fig.10 se muestran ejemplos de ambas instrucciones.

Figura 10 Adicionando el capítulo y cerrando el documento

Otras recomendaciones

Antes de construir el documento, se debe crear una clase


general que contenga la información que desea plasmar en el
mismo, atendiendo a la estructura que desea. Figura 12 Ejemplo de espaciado y alineación

Llame al método de crear el documento, pasándole en cada Nota:


párrafo, los datos de la clase. En los textos a introducir, el enter o lo que es lo mismo, el
salto a la línea siguiente se realiza con la notación “\n”.

Otros elementos y características que pueden ser utilizados al 3. Fecha y hora actual
crear un PDF
Es posible que sea de interés para algunos usuarios que la
1. Adicionando una imagen fecha y hora actual queden reflejadas en el documento que se
Para adicionar una imagen en el documento deben analizarse emite. Existen múltiples formatos que permiten introducir
las características de la misma y establecer su ubicación y estos datos.
tamaño. Este último se considerará un porciento específico de
la escala real. En la Fig.11 se muestran las instrucciones Calendar, GregorianCalendar y DateFormat son librerías de
necesarias para insertar la imagen. 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:

- Pequeño(SHORT) Æ21/07/08
- Medio(MEDIUM) Æ21-jul-2008
- Largo(LONG) Æ21 de julio de 2008
- Completo(FULL) Æ lunes, 21 de julio de 2008
Figura 11 Insertando una imagen en el documento

Nota: En el ejemplo de la Fig.11, la imagen se encuentra en


una ubicación específica de la máquina.

2. Espaciado y alineación de objetos (párrafos)

Cualquier objeto que se introduzca en el documento puede


utilizar los métodos:

- setSpacingAfter(Number); que permite establecer el


espaciado posterior al objeto.
- setSpacingBefore(Number); referente al espaciado
anterior al objeto.
Figura 13 Utilización de la fecha y hora actual
- setAlignment(Element.ALIGN_CENTER) que permite
la alineación del objeto en el documento. Pueden ser
a la izquierda, derecha o centrado.
CCIA’2008 5

III. RESULTADOS grandes potencialidades. Su utilización para la creación de


Siguiendo las indicaciones descritas en los apartados reportes e informes simples es fácil. Este hecho permite
anteriores se obtiene un documento PDF similar al que se prescindir de la utilización de herramientas complejas que a
muestra a continuación. En la primera página aparecerá un pesar de facilitar el diseño de los reportes, aumenta el costo de
párrafo y la estructura será similar a la siguiente: los proyectos.

V. REFERENCIAS
[1] “jMSC. Herramienta CASE para el desarrollo
de Asistentes de Navegación Web”. Proyecto Fin
de Carrera I.T.Telecomunicaciones:Telemática.
Daniel Lastra Rodríguez. Escuela Politécnica
Superior Universidad Carlos III de Madrid. (julio-
2004). Consultado septiembre/2008.

VI. BIBLIOGRAFIA

- 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 Gestión Informatizada de las
Bases de Transporte del Ministerio de Educación
Superior.” Trabajo de diploma para optar por el
título de Ingeniería en Informática. ISPJAE.
Figura 14 Primera página de un documento PDF creado dinámicamente.
Milena Ramos Pérez (Graduación 2006-2007)
Consultado septiembre/2008.
Una segunda página donde se pudiera ver la organización
del documento en capítulos y secciones, pudiera ser, la
siguiente, atendiendo a los ejemplos realizados a lo largo del
artículo.

Figura 15 Organización del documento en capítulos y secciones

IV. CONCLUSIONES
iText es una librería de Java de fácil manejo pero con

También podría gustarte