Manipulando PDFs con iText

   Hace algún tiempo alguien me habia comentado como concatenar los reportes generados con iReport, pero esto no es posible a menos que usemos una libreria externa. Como no conocia mucho del tema me recomendaron utilizar "iText", así que aquí vamos.

   Lo primero que es de notar es que esta librería tiene las mil y un funciones, desde crear el PDF desde "cero" hasta utilizar uno ya creado, visualizarlo y modificarlo, claro que hasta cierto punto pero sigue siendo de gran utilidad, para ello debemos descargar la librería de la página oficial. (click aca para descargar).

   Antes que nada aclarare que esto por ser a modo de ejemplo, colocare todas las librerías y archivos generados dentro de la misma carpeta donde esta la clase, de forma que si queremos organizarlo solo debemos indicar donde estan cada uno de esos archivos con rutas. Una vez hecho esto, entonces vamos con nuestro primer ejemplo, que es crear un PDF, lo primero son las librerías básicas:
import java.io.FileOutputStream;
import java.io.IOException;

import com.itextpdf.text.Document;
import com.itextpdf.text.DocumentException;
import com.itextpdf.text.Paragraph;
import com.itextpdf.text.pdf.PdfWriter;
   Y ahora el código:
public class iText {

    static final String nombre_archivo = "probando_itext.pdf";

    public static void main( String args[] ) throws DocumentException, IOException {
        Document documento = new Document();
        PdfWriter.getInstance(documento, new FileOutputStream(nombre_archivo));
        documento.open();
        documento.add(new Paragraph("Este es un PDF sencillo"));
        documento.close();
    }
}
   Con esto ya tendremos un archivo PDF generado, esto es lo básico. Veamos como hacer un archivo con varias páginas, para ello solo es de agregar ".newPage()" en cada salto que queramos hacer:
public class iText {

    static final String nombre_archivo = "VariasPaginas.pdf";

    public static void main( String args[] ) throws DocumentException, IOException {
        Document documento = new Document();
        PdfWriter.getInstance(documento, new FileOutputStream(nombre_archivo));
        documento.open();
        documento.add(new Paragraph("Pagina 1"));
        documento.newPage();
        documento.add(new Paragraph("Pagina 2"));
        documento.newPage();
        documento.add(new Paragraph("Pagina 3"));
        documento.newPage();
        documento.close();
    }
}
   Para agregar una página en blanco:
public class iText {

    static final String nombre_archivo = "PaginaBlanca.pdf";

    public static void main( String args[] ) throws DocumentException, IOException {
        Document documento = new Document();
        PdfWriter editor = PdfWriter.getInstance(documento, new FileOutputStream(nombre_archivo));
        documento.open();
        documento.add(new Paragraph("Este es un archivo con 3 pagina: Pagina 1"));
        documento.newPage();
        editor.setPageEmpty(false);
        documento.newPage();
        documento.add(new Paragraph("Pagina 3"));
        documento.close();
    }
}
   Y esto es lo básico, para mas ejemplos podemos consultar la página oficial: ejemplos.

3 Comentarios

Escribir Comentario
Anónimo
AUTOR
8 de septiembre de 2015, 8:39 delete

Buenas tengo un documento pdf (bytes[]) y necesito añadir una página en blanco al final para escribirle un texto. ¿Valdría con newPage() y una vez posicionado en Document escribir? Gracias

Responder
avatar
2 de marzo de 2016, 13:23 delete

En teoría si, prueba y si marca algún error comenta...

Responder
avatar

Lamentablemente hay muchos usuarios en la red que han llegado al blog para escribir obscenidades, así que la moderación se hace necesaria. Recuerda utilizar un lenguaje correcto y espera a que sea aprobado.

Si necesitas publicar código haz click en "Conversión" para hacerlo legible.
ConversiónConversión EmoticonEmoticon