Generación de informes PDF en Java: bibliotecas y ejemplos

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 informes PDF en Java: revisión de bibliotecas y ejemplos de código

La creación de documentos PDF es una de las tareas comunes en aplicaciones Java empresariales: desde la generación de facturas y actas hasta la elaboración de informes analíticos complejos con gráficos. En este artículo, revisaremos tres bibliotecas principales para la generación de PDF en Java — iText, Apache PDFBox y JasperReports — compararemos sus capacidades y proporcionaremos ejemplos de código funcionales.



1. iText — biblioteca potente y flexible

iText (actualmente iText 8.x) es una de las bibliotecas más populares para trabajar con PDF en Java. Admite la creación de documentos desde cero, edición de existentes, adición de imágenes, tablas, marcadores, marcas de agua, así como trabajo con formularios y firmas digitales.

Licencias: iText se distribuye bajo licencia dual — AGPL (gratuita para proyectos open-source) y comercial (para software propietario).



Ejemplo: creación de un documento PDF simple con texto y tabla

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

public class ItextPdfExample { public static void main(String[] args) throws Exception { String dest = "report.pdf"; PdfWriter writer = new PdfWriter(dest); PdfDocument pdf = new PdfDocument(writer); Document document = new Document(pdf);

// Título document.add(new Paragraph("Informe de ventas").setBold().setFontSize(18));

// Tabla Table table = new Table(3); table.addCell(new Cell().add(new Paragraph("Producto"))); table.addCell(new Cell().add(new Paragraph("Cantidad"))); table.addCell(new Cell().add(new Paragraph("Monto"))); table.addCell("Portátil"); table.addCell("5"); table.addCell("450 000 ₽"); table.addCell("Ratón"); table.addCell("12"); table.addCell("6 000 ₽");

document.add(table); document.close(); System.out.println("¡PDF creado!"); }}

Este código crea un PDF con el título «Informe de ventas» y una tabla de tres columnas. iText maneja automáticamente los saltos de línea y la división en páginas.



2. Apache PDFBox — alternativa ligera y gratuita

Apache PDFBox es una biblioteca de código abierto (licencia Apache 2.0) que permite crear, editar y extraer texto de archivos PDF. PDFBox no requiere dependencias externas y es ideal para tareas simples: generación de documentos de texto, llenado de formularios, extracción de datos.

Desventaja: trabajar con tablas y maquetación compleja requiere más código manual que en iText.



Ejemplo: creación de PDF con texto e imagen

import org.apache.pdfbox.pdmodel.PDDocument;import org.apache.pdfbox.pdmodel.PDPage;import org.apache.pdfbox.pdmodel.PDPageContentStream;import org.apache.pdfbox.pdmodel.font.PDType0Font;import java.io.File;

public class PdfBoxExample { public static void main(String[] args) throws Exception { try (PDDocument document = new PDDocument()) { PDPage page = new PDPage(); document.addPage(page);

PDPageContentStream contentStream = new PDPageContentStream(document, page); // Carga de fuente (¡obligatorio!) PDType0Font font = PDType0Font.load(document, new File("LiberationSans-Regular.ttf")); contentStream.setFont(font, 14); contentStream.beginText(); contentStream.newLineAtOffset(50, 700); contentStream.showText("¡Hola, mundo PDFBox!"); contentStream.endText(); contentStream.close();

Recommendations