PDF-Generierung in Java: Überblick über die besten Bibliotheken
Die Generierung von PDF-Dokumenten ist eine typische Aufgabe in der Java-Unternehmensentwicklung. Berichte, Rechnungen, Verträge, Zertifikate – all das lässt sich bequem programmatisch erstellen. In diesem Artikel betrachten wir die drei beliebtesten Bibliotheken für die Arbeit mit PDF in Java: iText, Apache PDFBox und OpenPDF. Wir analysieren ihre Möglichkeiten, Besonderheiten und geben praktische Codebeispiele.
1. iText – leistungsstark und kommerzieller Standard
iText ist der De-facto-Standard für die PDF-Erstellung in Java. Die Bibliothek existiert seit dem Jahr 2000 und bietet ein breites Spektrum an Funktionen: von einfachem Text bis hin zu komplexen Formularen, Wasserzeichen, digitalen Signaturen und der Arbeit mit PDF/A.
Lizenzierung: iText wird unter einer dualen Lizenz vertrieben. Für Open-Source-Projekte (AGPL) ist es kostenlos, für die kommerzielle Nutzung ist der Erwerb einer Lizenz erforderlich.
Beispiel: Erstellung eines einfachen PDFs mit einer Tabelle
import com.itextpdf.kernel.pdf.PdfDocument;import com.itextpdf.kernel.pdf.PdfWriter;import com.itextpdf.layout.Document;import com.itextpdf.layout.element.Cell;import com.itextpdf.layout.element.Paragraph;import com.itextpdf.layout.element.Table;import com.itextpdf.layout.property.UnitValue;
public class ItextExample { public static void main(String[] args) throws Exception { String dest = "example_itext.pdf"; PdfWriter writer = new PdfWriter(dest); PdfDocument pdfDoc = new PdfDocument(writer); Document document = new Document(pdfDoc);
// Überschrift hinzufügen document.add(new Paragraph("Verkaufsbericht"));
// Tabelle erstellen Table table = new Table(UnitValue.createPercentArray(3)).useAllAvailableWidth(); table.addHeaderCell(new Cell().add(new Paragraph("Produkt"))); table.addHeaderCell(new Cell().add(new Paragraph("Menge"))); table.addHeaderCell(new Cell().add(new Paragraph("Preis")));
table.addCell(new Cell().add(new Paragraph("Laptop"))); table.addCell(new Cell().add(new Paragraph("10"))); table.addCell(new Cell().add(new Paragraph("1200 $")));
table.addCell(new Cell().add(new Paragraph("Maus"))); table.addCell(new Cell().add(new Paragraph("50"))); table.addCell(new Cell().add(new Paragraph("25 $")));
document.add(table); document.close();
System.out.println("PDF erstellt: " + dest); }}Vorteile von iText: riesige Community, hervorragende Dokumentation, Unterstützung komplexer Szenarien (Signaturen, Formulare, PDF/UA). Nachteile: hohe Kosten für die kommerzielle Lizenz.
2. Apache PDFBox – kostenlos und quelloffen
Apache PDFBox ist eine vollständig kostenlose Bibliothek unter der Apache 2.0-Lizenz. Sie ermöglicht nicht nur die PDF-Erstellung von Grund auf, sondern auch die Bearbeitung vorhandener Dokumente, das Extrahieren von Text, die Arbeit mit Formularen und Bildern.
Beispiel: Erstellung eines Dokuments 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 org.apache.pdfbox.pdmodel.graphics.image.PDImageXObject;
import java.io.File;
public class PdfBoxExample { 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);
// Schriftart laden (Schriftartdatei erforderlich) PDType0Font font = PDType0Font.load(document, new File("/usr/share/fonts/truetype/dejavu/DejaVuSans.ttf")); contentStream.setFont(font, 14); contentStream.beginText(); contentStream.newLineAtOffset(50, 700); conte Auch in der Bibliothek
Arbeiten mit CSV in PHP: Die Bibliothek SplFileObject und integrierte Funktionen
Apache HttpClient für Java: Vollständige Anleitung mit Beispielen
Konfiguration von Go-Anwendungen: Die Bibliothek viper
Dependency Injection Container für Go (Golang) — wire, dig, fx
Arbeiten mit ZIP/Archiven in Swift (iOS/macOS): vollständige Anleitung