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 | Sí | 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
- Requisitos del proyecto: Elige la biblioteca según la complejidad y las funcionalidades necesarias.
- 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
- Uso de plantillas: JasperReports o Flying Saucer son útiles si quieres usar HTML o plantillas predefinidas.
Comentarios
Publicar un comentario