Generierung von PDF-Berichten in Java: Überblick über Bibliotheken und Codebeispiele
Die Erstellung von PDF-Dokumenten ist eine häufige Aufgabe in Unternehmens-Java-Anwendungen: von der Erstellung von Rechnungen und Akten bis hin zur Erstellung komplexer analytischer Berichte mit Diagrammen. In diesem Artikel betrachten wir drei Hauptbibliotheken zur PDF-Generierung in Java – iText, Apache PDFBox und JasperReports – vergleichen ihre Funktionen und geben funktionierende Codebeispiele.
1. iText – eine leistungsstarke und flexible Bibliothek
iText (aktuell iText 8.x) ist eine der beliebtesten Bibliotheken für die Arbeit mit PDF in Java. Unterstützt die Erstellung von Dokumenten von Grund auf, die Bearbeitung vorhandener Dokumente, das Hinzufügen von Bildern, Tabellen, Lesezeichen, Wasserzeichen sowie die Arbeit mit Formularen und digitalen Signaturen.
Lizenzierung: iText wird unter einer dualen Lizenz vertrieben – AGPL (kostenlos für Open-Source-Projekte) und kommerziell (für proprietäre Software).
Beispiel: Erstellung eines einfachen PDF-Dokuments mit Text und Tabelle
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);
// Überschrift document.add(new Paragraph("Verkaufsbericht").setBold().setFontSize(18));
// Tabelle Table table = new Table(3); table.addCell(new Cell().add(new Paragraph("Produkt"))); table.addCell(new Cell().add(new Paragraph("Menge"))); table.addCell(new Cell().add(new Paragraph("Betrag"))); table.addCell("Laptop"); table.addCell("5"); table.addCell("450 000 ₽"); table.addCell("Maus"); table.addCell("12"); table.addCell("6 000 ₽");
document.add(table); document.close(); System.out.println("PDF erstellt!"); }}Dieser Code erstellt ein PDF mit der Überschrift „Verkaufsbericht“ und einer Tabelle mit drei Spalten. iText verarbeitet automatisch Zeilenumbrüche und Seitenumbrüche.
2. Apache PDFBox – eine leichte und kostenlose Alternative
Apache PDFBox ist eine Open-Source-Bibliothek (Apache 2.0-Lizenz), mit der PDF-Dateien erstellt, bearbeitet und Text daraus extrahiert werden kann. PDFBox benötigt keine externen Abhängigkeiten und eignet sich hervorragend für einfache Aufgaben: Generierung von Textdokumenten, Ausfüllen von Formularen, Datenextraktion.
Nachteil: Die Arbeit mit Tabellen und komplexem Layout erfordert mehr manuellen Code als bei iText.
Beispiel: Erstellung eines PDF mit Text und Bild
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); // Schriftart laden (erforderlich!) PDType0Font font = PDType0Font.load(document, new File("LiberationSans-Regular.ttf")); contentStream.setFont(font, 14); contentStream.beginText(); contentStream.newLineAtOffset(50, 700); contentStream.showText("Hallo, Welt PDFBox!"); contentStream.endText(); contentStream.close();
Auch in der Bibliothek
TypeStack/class-validator für TypeScript: Komplettguide mit Beispielen
Reaktive Programmierung in C++: Bibliotheken und Praxis
Event Bus und Observer-Pattern in Rust: Implementierung einer ereignisbasierten Architektur