Librerías para generar reportes pdf desde java jsp

 Existen varias bibliotecas que puedes usar para generar archivos PDF desde JSP en un proyecto Java. Aquí te menciono algunas de las más populares y ampliamente utilizadas:


1. iText

  • Una de las bibliotecas más populares para crear y manipular archivos PDF.
  • Ofrece muchas funcionalidades avanzadas, como agregar imágenes, tablas, estilos, fuentes personalizadas, etc.
  • Es gratuita para proyectos de código abierto, pero requiere licencia para uso comercial.

Dependencia Maven:

<dependency>
    <groupId>com.itextpdf</groupId>
    <artifactId>itext7-core</artifactId>
    <version>7.2.5</version>
</dependency>

Ejemplo básico:

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

public class PdfGenerator {
    public static void main(String[] args) throws Exception {
        PdfWriter writer = new PdfWriter("archivo.pdf");
        PdfDocument pdf = new PdfDocument(writer);
        Document document = new Document(pdf);
        document.add(new Paragraph("¡Hola, mundo desde iText!"));
        document.close();
        System.out.println("PDF generado con éxito.");
    }
}

2. Apache PDFBox

  • Biblioteca gratuita y de código abierto desarrollada por Apache.
  • Es ideal para crear PDFs básicos, modificar archivos existentes o extraer texto de PDFs.

Dependencia Maven:

<dependency>
    <groupId>org.apache.pdfbox</groupId>
    <artifactId>pdfbox</artifactId>
    <version>2.0.29</version>
</dependency>

Ejemplo básico:

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;

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

        PDPageContentStream contentStream = new PDPageContentStream(document, page);
        contentStream.beginText();
        contentStream.setFont(PDType1Font.HELVETICA_BOLD, 12);
        contentStream.newLineAtOffset(100, 700);
        contentStream.showText("¡Hola, mundo desde PDFBox!");
        contentStream.endText();
        contentStream.close();

        document.save("archivo.pdf");
        document.close();
        System.out.println("PDF generado con éxito.");
    }
}

3. JasperReports

  • Biblioteca muy popular para generar informes en formato PDF, Excel, Word, etc.
  • Se integra con herramientas como iReport Designer o JasperSoft Studio para diseñar plantillas visualmente.
  • Ideal para reportes complejos.

Dependencia Maven:

<dependency>
    <groupId>net.sf.jasperreports</groupId>
    <artifactId>jasperreports</artifactId>
    <version>6.20.0</version>
</dependency>

Flujo básico:

  • Diseña un archivo .jrxml (plantilla) en JasperSoft Studio.
  • Usa JasperReports para llenar la plantilla y generar el PDF:
import net.sf.jasperreports.engine.*;
import net.sf.jasperreports.export.*;

public class ReportGenerator {
    public static void main(String[] args) throws Exception {
        JasperReport report = JasperCompileManager.compileReport("reporte.jrxml");
        JasperPrint print = JasperFillManager.fillReport(report, null, new JREmptyDataSource());
        JasperExportManager.exportReportToPdfFile(print, "reporte.pdf");
        System.out.println("PDF generado con éxito.");
    }
}

4. Flying Saucer (OpenHTML2PDF)

  • Ideal para generar PDFs a partir de archivos HTML/CSS.
  • Muy útil si ya tienes páginas web diseñadas que deseas exportar a PDF.

Dependencia Maven:

<dependency>
    <groupId>org.xhtmlrenderer</groupId>
    <artifactId>flying-saucer-pdf</artifactId>
    <version>9.1.22</version>
</dependency>

Ejemplo básico:

import com.openhtmltopdf.pdfboxout.PdfRendererBuilder;
import java.io.FileOutputStream;

public class PdfGenerator {
    public static void main(String[] args) throws Exception {
        String html = "<html><body><h1>Hola Mundo</h1><p>Generando PDF desde HTML</p></body></html>";
        PdfRendererBuilder builder = new PdfRendererBuilder();
        builder.useFastMode();
        builder.withHtmlContent(html, null);
        builder.toStream(new FileOutputStream("archivo.pdf"));
        builder.run();
        System.out.println("PDF generado con éxito.");
    }
}

5. Docx4j

  • Aunque está diseñado principalmente para trabajar con documentos Word, también permite convertir archivos Word a PDF.
  • Útil si necesitas integrar ambas capacidades (Word y PDF).

Dependencia Maven:

<dependency>
    <groupId>org.docx4j</groupId>
    <artifactId>docx4j</artifactId>
    <version>11.4.8</version>
</dependency>

Comparación rápida

Biblioteca Facilidad de uso Funcionalidades Avanzadas Licencia
iText Alta Gratuita/Comercial
Apache PDFBox Media Básicas Gratuita
JasperReports Media Sí (Reportes) Gratuita/Comercial
Flying Saucer Alta HTML a PDF Gratuita
Docx4j Media Word a PDF Gratuita/Comercial

Consideraciones

  1. Requisitos del proyecto: Elige la biblioteca según la complejidad y las funcionalidades necesarias.
  2. Compatibilidad con JSP: En el lado del servidor JSP, genera el PDF y envíalo como respuesta al cliente.
    response.setContentType("application/pdf");
    response.setHeader("Content-Disposition", "attachment; filename=archivo.pdf");
    // Escribe el PDF al OutputStream del response
    
  3. Uso de plantillas: JasperReports o Flying Saucer son útiles si quieres usar HTML o plantillas predefinidas.


Comentarios

Entradas populares de este blog

Como restablecer la contraseña del usuario root de MySQL en Windows

instalar el driver JDBC de MySQL en NetBeans en Ubuntu Linux

Comandos SQL Básicos de Manipulación de Datos en MySQL