Ejemplo sencillo de creación de un pdf con iText

De ChuWiki

Vamos a ver en este tutorial como crear un fichero pdf sencillo usando la librería iText

Descarga de la librería[editar]

Primero debemos decargar el jar con la libería de la página de descargas de iText y añadirla a nuestro proyecto o CLASSPATH. Para el ejemplo nos hemos bajado iText-5.0.1.jar.

Abrimos el documento[editar]

Desde nuestro código java, lo primero que debemos hacer es crear un documento nuevo pdf, para poder escribir en él

import com.itextpdf.text.Document;
import com.itextpdf.text.DocumentException;
import com.itextpdf.text.pdf.PdfWriter;
...

// Se crea el documento
Document documento = new Document();

// Se crea el OutputStream para el fichero donde queremos dejar el pdf.
FileOutputStream ficheroPdf = new FileOutputStream("fichero.pdf");

// Se asocia el documento al OutputStream y se indica que el espaciado entre
// lineas sera de 20. Esta llamada debe hacerse antes de abrir el documento
PdfWriter.getInstance(documento,ficheroPdf).setInitialLeading(20);

// Se abre el documento.
documento.open();

Ahora sólo nos queda ir añadiendo los distintos elementos que queramos.

Añadir elementos[editar]

El documento tiene métodos add() para añadir cualquier tipo de clase de iText que implemente la interface Element. También tiene métodos para añadir las propiedades del documento, como addTitle(), addAuthor(), etc.

Dentro de los Element que podemos añadir, hay muchos y muy variados: Frases, párrafos, capítulos, imágenes, tablas, separadores, etc, etc, etc. Puedes hacerte una idea viendo las clases que implementan Element en la API http://api.itextpdf.com/com/itextpdf/text/Element.html

Vamos aquí a añadir sólo algunos de ellos, a modo de ejemplo

Añadir párrafos[editar]

En el siguiente código se añaden dos párrafos, uno normal y otro al que le hemos cambiado la fuente, tamaño y color

import com.itextpdf.text.Font;
import com.itextpdf.text.FontFactory;
import com.itextpdf.text.Paragraph;
import com.itextpdf.text.BaseColor;
...
documento.add(new Paragraph("Esto es el primer párrafo, normalito"));

documento.add(new Paragraph("Este es el segundo y tiene una fuente rara",
				FontFactory.getFont("arial",   // fuente
				22,                            // tamaño
				Font.ITALIC,                   // estilo
				BaseColor.CYAN)));             // color


Añadir una foto[editar]

Teniendo un fichero de imagen de los formatos habituales (jpg, png, gif, etc), podemos añadir la foto fácilmente a nuestro documento

import com.itextpdf.text.Image;
...
try
{
	Image foto = Image.getInstance("pingu.png");
	foto.scaleToFit(100, 100);
	foto.setAlignment(Chunk.ALIGN_MIDDLE);
	documento.add(foto);
}
catch ( Exception e )
{
	e.printStackTrace();
}


Añadir una tabla[editar]

Para añadir una tabla usaremos la clase PdfPTAble de iText, que se instancia pasando el número de columnas y luego sólo hay que ir añadiendo celdas con el método addCell(). Hay varios métodos addCell() también admite distintos elementos dentro, como frases, imágenes, otras tablas, etc. Aquí nos limitaremos a un sencillo String. Crearemos una tabla con 3 columnas y le añadiremos 15 celdas, para que quede de 3 columnas por 5 filas.

import com.itextpdf.text.pdf.PdfPTable;

...
PdfPTable tabla = new PdfPTable(3);
for (int i = 0; i < 15; i++)
{
	tabla.addCell("celda " + i);
}
documento.add(tabla);

Cierre del documento[editar]

Ahora sólo nos queda cerrar el documento y visualizar el resultado abriendo el fichero con el acrobat.

documento.close();