Generación de informes PDF en Java: revisión de bibliotecas y herramientas

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 herramientas

La creación de documentos PDF es una de las tareas más comunes en el desarrollo corporativo con Java. Informes, facturas, albaranes, paneles analíticos: todo esto requiere un conjunto de herramientas flexible y eficiente. En este artículo, analizaremos cuatro bibliotecas clave para la generación de PDF en Java: Apache PDFBox, iText, JasperReports y OpenPDF. Examinaremos sus puntos fuertes, ejemplos de código y casos de uso.



1. Apache PDFBox: creación y edición de bajo nivel

Apache PDFBox es una biblioteca de código abierto (licencia Apache 2.0) que permite crear documentos PDF desde cero, así como editarlos, extraer texto y rellenar formularios. Su principal ventaja es el control total sobre el contenido: se trabaja directamente con los objetos del documento.

Ejemplo de creación de un PDF simple:

import org.apache.pdfbox.pdmodel.*;import org.apache.pdfbox.pdmodel.font.PDType1Font;import java.io.IOException;

public class PdfBoxExample { 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.setFont(PDType1Font.HELVETICA_BOLD, 14); contentStream.beginText(); contentStream.newLineAtOffset(100, 700); contentStream.showText("¡Hola, mundo PDFBox!"); contentStream.endText(); }

document.save("output.pdf"); System.out.println("¡PDF creado!"); } }}

Cuándo usarlo: si se necesita un control preciso sobre cada elemento (por ejemplo, para generar gráficos complejos o rellenar formularios). No es adecuado para grandes volúmenes de texto sin maquetación previa.



2. iText: potencia comercial para informes complejos

iText es el estándar de facto en la industria. Existe en dos versiones: iText 7 Community (AGPL) e iText 7 Commercial (licencia comercial). La biblioteca admite HTML a PDF, creación de formularios interactivos, firmas digitales, cifrado y mucho más.

Ejemplo de generación de PDF con una tabla:

import com.itextpdf.kernel.pdf.*;import com.itextpdf.layout.*;import com.itextpdf.layout.element.*;

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

document.add(new Paragraph("Informe mensual")); Table table = new Table(2); table.addCell("Indicador"); table.addCell("Valor"); table.addCell("Ingresos"); table.addCell("1 250 000 RUB"); table.addCell("Gastos"); table.addCell("890 000 RUB"); document.add(table);

document.close(); System.out.println("¡Informe listo!"); }}

Cuándo usarlo: para proyectos comerciales que requieran alto rendimiento, soporte de maquetación compleja y documentos con validez legal (firmas, cifrado). Atención: la versión AGPL requiere abrir el código al distribuirlo.



3. JasperReports: generación basada en plantillas JRXML

JasperReports no es solo una biblioteca, sino todo un ecosistema para la creación de informes. Se describe la plantilla en formato XML (o mediante el editor visual Jaspersoft Studio), y la biblioteca la rellena con datos de bases de datos, colecciones o JSON. El resultado se puede exportar a PDF, Excel, HTML, CSV y otros formatos.

Ejemplo de llenado programático de una plantilla:

import net.sf.jasperre                    

Recommendations