Generación de PDF en Java: revisión de las mejores bibliotecas (iText, Apache PDFBox, OpenPDF)

Entrenador de Python en Línea para Principiantes

Aprende Python fácilmente sin sobrecargarte de teoría. Resuelve tareas prácticas con verificación automática, recibe pistas y escribe código directamente en el navegador, sin instalar nada.

Start Course

Generación de PDF en Java: revisión de las bibliotecas iText, Apache PDFBox y OpenPDF

La creación de documentos PDF es una de las tareas frecuentes en aplicaciones corporativas y web en Java: desde la generación de informes y facturas hasta la exportación de datos y la creación de libros electrónicos. En Java existen varias bibliotecas maduras, cada una con sus puntos fuertes. En este artículo revisaremos tres principales: iText, Apache PDFBox y OpenPDF, proporcionaremos ejemplos de código y ayudaremos a elegir la herramienta adecuada.



1. iText — potente, pero con licencia comercial

iText es la biblioteca más popular para trabajar con PDF. Ofrece control total sobre el contenido: texto, imágenes, tablas, formularios, marcas de agua, firmas. A partir de la versión 5.5.x, iText se distribuye bajo licencia dual AGPL (gratuita para proyectos open-source) y comercial (para software propietario). La versión 7.x (iText 7) es más moderna, modular y de alto rendimiento.



Ejemplo: creación de un PDF simple con texto (iText 7)

import com.itextpdf.kernel.pdf.PdfDocument;import com.itextpdf.kernel.pdf.PdfWriter;import com.itextpdf.layout.Document;import com.itextpdf.layout.element.Paragraph;

public class CreatePdfWithIText { public static void main(String[] args) throws Exception { String dest = "output_itext.pdf"; PdfWriter writer = new PdfWriter(dest); PdfDocument pdf = new PdfDocument(writer); Document document = new Document(pdf); document.add(new Paragraph("¡Hola, mundo PDF!")); document.add(new Paragraph("Esto fue creado con iText 7.")); document.close(); System.out.println("PDF creado exitosamente: " + dest); }}


Ventajas de iText:

  • Máxima flexibilidad: soporte para tablas, listas, estilos, fuentes, imágenes.
  • Trabajo con PDF/A, cifrado, firmas digitales.
  • Alto rendimiento y calidad de renderizado.

Desventajas:

  • Licencia compleja (AGPL) — para uso comercial se requiere compra.
  • API bastante extensa que requiere aprendizaje.


2. Apache PDFBox — gratuito y de código abierto

Apache PDFBox es una biblioteca de código abierto (licencia Apache 2.0) que permite crear, editar y extraer contenido de PDF. A diferencia de iText, PDFBox no requiere licencia comercial para proyectos propietarios. También admite trabajo con formularios, cifrado, incrustación de fuentes.



Ejemplo: creación de PDF con texto (PDFBox 2.x)

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

import java.io.IOException;

public class CreatePdfWithPdfBox { public static void main(String[] args) throws IOException { try (PDDocument document = new PDDocument()) { PDPage page = new PDPage(); document.addPage(page); try (PDPageContentStream contentStream = new PDPageContentStream(document, page)) { contentStream.beginText(); contentStream.setFont(PDType1Font.HELVETICA, 14); contentStream.newLineAtOffset(50, 700); contentStream.showText("¡Hola, mundo PDF!"); contentStream.newLineAtOffset(0, -20); contentStream.showText("Esto fue creado con Apache PDFBox."); contentStream.endText(); } document.save("output_pdfbox.pdf"); System.out.println("PDF creado exitosamente: output_pdfbox.pdf"); } }}


Ventajas de Apache PDFBox:

  • Completamente gratuito (licencia Apache 2.0) — adecuado para cualquier proyecto.
  • Soporte para extracción de texto, imágenes, metadatos

Recommendations