Crear PDF con PDFBox en Java


PDFBOX es una libreria para crear PDFs en Java, es una libreria del Apache Project, por lo que es software libre , esta muy bien documentada y tiene una gran comudidad para resolver problemas y dudas.

La libreria PDFBox sirve para crear , modificar , leer o extraer datos de documentos pdf en Java.

Para crear un documento con PDFBox vamos a crear un proyecto Java nuevo en NetBeans.

Descargar PDFBox

Para descargar PDFBox vamos a usar maven, agregaremos el XML de la dependencia en el archivo pom.xml

    <dependencies>
        <!-- https://mvnrepository.com/artifact/org.apache.pdfbox/pdfbox -->
<dependency>
    <groupId>org.apache.pdfbox</groupId>
    <artifactId>pdfbox</artifactId>
    <version>3.0.0-RC1</version>
</dependency>

    </dependencies>

Despues en la carpeta “Dependencies” de nuestro proyecto, daremos click derecho y despues “Download Declared Dependencies” y se descargara PDFBox, FontBox que usaremos en nuestro proyecto.

Codigo

Primero que nada es necesario agregar los siguientes imports, aunque luego se pueden agregar por suguerencia del NetBeans.

import org.apache.pdfbox.pdmodel.PDDocument;
import org.apache.pdfbox.pdmodel.PDPage;
import org.apache.pdfbox.pdmodel.PDPageContentStream;
import org.apache.pdfbox.pdmodel.font.PDFont;
import org.apache.pdfbox.pdmodel.font.PDType1Font;

El siguiente es el codigo para crear un PDF Basico con un titulo y 2 parrafos, le agregue comentarios a cada linea para que puedan comprender mejor.

/// CREAR DOCUMENTO
        PDDocument document = new PDDocument();
        /// CREAR PAGINA
        PDPage page = new PDPage();
        /// AGREGAR LA PAGINA AL DOCUMENTO
        document.addPage(page);
        /// CREAR UN STREAM PARA AGREGAR TEXTO
        PDPageContentStream stream = new PDPageContentStream(document, page);
        /// CREAR UN OBJETO CON LA FUENTE QUE VAMOS A USAR PARA EL TEXTO
        PDFont font = PDType1Font.HELVETICA;
        /// INICIAMOS EL STREAM DE TEXTO
        stream.beginText();
        /// DEFINIMOS LA FUENTE Y EL TAMA~O PARA EL TITULO
        stream.setFont(font, 24);
        /// DEFINIMOS LAS COORDENADAS PARA INICIAR EL TEXTO
        stream.newLineAtOffset(10,760 );   
        /// MOSTRAMOS EL TEXTO/ TITULO
        stream.showText("Crear PDF con PDFBox en Java");
        /// DEFINIMOS EL LA FUENTE Y TAMA~O PARA LOS PARRAFOS
        stream.setFont(font, 12);
        /// DEFINIMOS LAS COORDENADAS EN REFERENCIA A LA DEFINICION DE COORDENADAS ANTERIOR
        stream.newLineAtOffset(0, -10);
        /// MOSTRAMOS EL TEXTO DE UN PARRAFO
        stream.showText("Hola Mundo !!!");
        /// DEFINIMOS LAS COORDENADAS EN REFERENCIA A LA DEFINICION DE COORDENADAS ANTERIOR
        stream.newLineAtOffset(0, -10);
        /// MOSTRAMOS EL TEXTO DE OTRO PARRAFO
        stream.showText("Linea 3!");
        /// FINALIZAMOS EL STREAM DE TEXTO
        stream.endText();
        /// CERRAMOS EL STREAM
        stream.close();
        /// GUARDAMOS EL DOCUMENTO
        document.save("hola.pdf");
        /// CERRAMOS EL DOCUMENTO
        document.close();

El resultado se guardara en el archivo hola.pdf.

Resultado

Mas Informacion

Si requieres mas informacion puedes ver en la documentacion de PDFBox.

Link: https://pdfbox.apache.org/