Generación de PDF en Java: revisión de las 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 populares



La creación de documentos PDF es una de las tareas frecuentes en el desarrollo corporativo y educativo en Java. Informes, facturas, certificados, materiales educativos: todo esto es conveniente exportarlo a PDF. En Java existen varias bibliotecas maduras que permiten tanto crear PDF desde cero como editar archivos existentes. En este artículo revisaremos las tres herramientas más populares: iText, Apache PDFBox y OpenPDF.



1. iText — potente, pero con restricciones de licencia



iText es la biblioteca Java más conocida para trabajar con PDF. Existe desde el año 2000 y soporta prácticamente todas las funcionalidades del formato: texto, tablas, imágenes, marcas de agua, anotaciones, firmas y mucho más.



Sin embargo, iText tiene un detalle importante: a partir de la versión 5.5.x, la biblioteca se publica bajo una licencia dual. Para uso comercial se requiere la compra de una licencia AGPL, a menos que distribuyas tu aplicación con código abierto. Para proyectos educativos publicados en acceso abierto, la versión iText 5.x bajo AGPL es adecuada.



Ejemplo de creación de un PDF simple con texto y tabla usando iText 5:



import com.itextpdf.text.*;import com.itextpdf.text.pdf.PdfPTable;import com.itextpdf.text.pdf.PdfWriter;import java.io.FileOutputStream;

public class ITextExample { public static void main(String[] args) throws Exception { Document document = new Document(); PdfWriter.getInstance(document, new FileOutputStream("example_itext.pdf")); document.open();

// Título document.add(new Paragraph("Ejemplo de PDF con iText", FontFactory.getFont(FontFactory.HELVETICA_BOLD, 18)));

// Tabla PdfPTable table = new PdfPTable(3); table.addCell("Columna 1"); table.addCell("Columna 2"); table.addCell("Columna 3"); table.addCell("Dato 1"); table.addCell("Dato 2"); table.addCell("Dato 3"); document.add(table);

document.close(); System.out.println("PDF creado: example_itext.pdf"); }}


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



Apache PDFBox es una biblioteca completamente gratuita bajo la licencia Apache 2.0. No tiene restricciones para uso comercial y proporciona una API de bajo nivel para trabajar con PDF. PDFBox permite crear documentos, extraer texto, rellenar formularios, trabajar con imágenes e incluso crear diseños complejos.



La principal ventaja de PDFBox es su flexibilidad y la ausencia de tarifas de licencia. La desventaja es que su API es menos conveniente para tareas simples que iText y requiere más código para el formato.



Ejemplo de creación de un PDF con texto y tabla usando 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 org.apache.pdfbox.pdmodel.common.PDRectangle;import java.io.IOException;

public class PDFBoxExample { public static void main(String[] args) throws IOException { try (PDDocument document = new PDDocument()) { PDPage page = new PDPage(PDRectangle.A4); document.addPage(page);

try (PDPageContentStream cs = new PDPageContentStream(document, page)) { // Título cs.setFont(PDType1Font.HELVETICA_BOLD, 18); cs.beginText(); cs.newLineAtOffset(50, 750); cs.showText("Ejemplo de PDF con PDFBox"); cs.endText();

// Tabla simple (simulación) cs.setFont(PDType1Font.HELVETICA, 12); cs.setLineWidth(1f); // Dibujamos las líneas de la tabla manualmente (simplificado) for (int i = 0; i < 4;

Recommendations