lunes, 14 de enero de 2013

Crear un PDF con iText [Java]

¡Hola a todos! Bienvenido de nuevo, a partir de este año trataré de aportar algún conocimiento que te ayude a mejorar tu nivel de programación, claro programando sobre Java y alguna que otra vez en Python.

El tema de hoy es: ¿Cómo creo un archivo PDF desde Java?, la respuesta es sencilla una de las clases que nos puede ayudar es iText, desde su página puedes realizar la descarga de las librerías necesarias para realizar tus proyectos, aunque como siempre yo te proporciono en el proyecto que adjunto mas abajo una carpeta "libs_extras" con esas mismas librerías.


El funcionamiento de la aplicación que muestro como ejemplo es práctica y fácil de entender, en un JFrame (Ventana) tenemos 2 elementos importantes: Un Cuadro de Texto para escribir el contenido que tendrá nuestro PDF y un botón que al dar clic sobre el creara el archivo con el contenido del cuadro de texto antes mencionado.

Al comienzo tienes una ventana como la que aparece a continuación:



Cuando damos clic en el botón Crear PDF sucede lo siguiente:


Para poder trabajar con las clases de iText antes que nada debemos importar las siguientes clases:



Posteriormente analizamos el siguiente método:


Tenemos un método llamado ConvertirPDF que no devolverá nada y tiene un parámetro que debe ser de tipo StringBuilder.

Todo el proceso se realizo dentro de un try para prevenir una excepción.

Lo primero es  crear el objeto documento, la clase Document tiene un constructor sobrecargado, es decir, varias formas de "inicializarlo" una es dejando Document(); y la otra es indicando 5 parámetros Document(tamaño de hoja, margen izq,margen der, margen sup, margen inf); el siguiente ejemplo muestra como se crea una hoja tamaño carta con margen de 2 cm en todos los lados:
Document documento=new Document(PageSize.LETTER,20,20,20,20);


La siguiente sentencia es para crear la instancia entre el objeto documento y el archivo pdf que sera creado. La clase PdfWriter por medio de su método getInstance se encarga de eso:

PdfWriter.getInstance(documento, new FileOutputStream(nombre));
La variable nombre es un String declarado al inicio de la clase con el nombre del archivo.


La clase Paragraph es para preparar el contenido que tendrá el PDF y el constructor que también es sobrecargado en este caso lo use de esta manera:

Paragraph parametro=new Paragraph(texto.toString(), FontFactory.getFont(FontFactory.TIMES_ROMAN, 12, Font.BOLD, BaseColor.RED));
Los parámetros del constructor son: Paragraph(contenido,fuente);
Tenemos también un caso especial el uso de la clase FontFactory que usa su método getFont para indicar una fuente, este se usa de la siguiente manera:
FontFactory.getFont(fuente,tamaño,estilo,color);

Recordemos que dentro del objeto parametro tenemos ya el contenido preparado, con el siguiente código lograremos introducir dicho contenido dentro del documento creado al comienzo:
documento.add(parametro);


Por último cerramos el documento para que termine su creación:

documento.close();


En el método del botón tenemos lo siguiente:



Primer se crear un StringBuilder (objeto para almacenar texto) al cual por medio del método append se le agrega lo que se obtenga del cuadro de texto (campoTexto).
En una condición evaluamos si contiene algún contenido el cuadro de texto si el valor es diferente de 0 significa que si lo hay y por lo tanto se llamara al método ConvertirPDF pasandole el StringBuilder texto, de ser 0 significa que esta vacío, esto último provocaría una excepción.

Bueno hasta aquí dejo esta publicación, espero les sea de ayuda en sus proyectos e investigaciones, a por cierto la liga del proyecto, cuídense y hasta la próxima.

    Choose :
  • OR
  • To comment
7 comentarios:
Write comentarios
  1. gracias, ya habia trabajado con esta libreria pero me faltaba lo de los margenes

    ResponderEliminar
  2. Gracias, me ha servido porque tenia dudas en como imprimirlo

    ResponderEliminar
  3. una pregunta he preguntado en varios blogs pero nadie me constesta , me gustaria saber como genero un pdf desde una base de datos con itext un ejemplo sencillo, o como ir añadiendo texto a las tablas y que se vayan creando automaticamente, no se si me explico bien, gracias....

    ResponderEliminar
    Respuestas
    1. saca los datos de tu BD y ve insertarlos a tu tabla y utiliza un ciclo para iterarlos, si defines un tamaño para tu tabla que ese sea una de tus condiciones y despues crea otra hoja en tu pdf y sigue llenando tu tabla con datos de tu BD. si me Explique ..?

      Eliminar
  4. gracias me sirvio,solo una pregunta como le puedo guardar en un directorio en especifico?

    ResponderEliminar