PDF-Generierung in Java: Überblick über die Bibliotheken iText, Apache PDFBox und OpenPDF
Die Erstellung von PDF-Dokumenten ist eine häufige Aufgabe in Unternehmens- und Webanwendungen mit Java: von der Erstellung von Berichten und Rechnungen bis zum Datenexport und der Erstellung von E-Books. In Java gibt es mehrere ausgereifte Bibliotheken, jede mit ihren eigenen Stärken. In diesem Artikel betrachten wir drei wichtige: iText, Apache PDFBox und OpenPDF, zeigen Codebeispiele und helfen Ihnen, das passende Werkzeug auszuwählen.
1. iText – leistungsstark, aber mit kommerzieller Lizenz
iText ist die beliebteste Bibliothek für die Arbeit mit PDF. Sie bietet vollständige Kontrolle über den Inhalt: Text, Bilder, Tabellen, Formulare, Wasserzeichen, Signaturen. Ab Version 5.5.x wird iText unter einer dualen Lizenz vertrieben: AGPL (kostenlos für Open-Source-Projekte) und kommerziell (für proprietäre Software). Version 7.x (iText 7) ist moderner, modularer und leistungsfähiger.
Beispiel: Erstellung eines einfachen PDFs mit Text (iText 7)
import com.itextpdf.kernel.pdf.PdfDocument;import com.itextpdf.kernel.pdf.PdfWriter;import com.itextpdf.layout.Document;import com.itextpdf.layout.element.Paragraph;
public class CreatePdfWithIText { public static void main(String[] args) throws Exception { String dest = "output_itext.pdf"; PdfWriter writer = new PdfWriter(dest); PdfDocument pdf = new PdfDocument(writer); Document document = new Document(pdf); document.add(new Paragraph("Hallo, PDF-Welt!")); document.add(new Paragraph("Dies wurde mit iText 7 erstellt.")); document.close(); System.out.println("PDF erfolgreich erstellt: " + dest); }}Vorteile von iText:
- Maximale Flexibilität: Unterstützung für Tabellen, Listen, Stile, Schriftarten, Bilder.
- Arbeit mit PDF/A, Verschlüsselung, digitalen Signaturen.
- Hohe Leistung und Renderqualität.
Nachteile:
- Komplexe Lizenz (AGPL) – für die kommerzielle Nutzung ist ein Kauf erforderlich.
- Relativ umfangreiche API, die Lernaufwand erfordert.
2. Apache PDFBox – kostenlos und offen
Apache PDFBox ist eine Open-Source-Bibliothek (Apache 2.0-Lizenz), die das Erstellen, Bearbeiten und Extrahieren von PDF-Inhalten ermöglicht. Im Gegensatz zu iText benötigt PDFBox keine kommerzielle Lizenz für proprietäre Projekte. Sie unterstützt auch die Arbeit mit Formularen, Verschlüsselung und das Einbetten von Schriftarten.
Beispiel: Erstellung eines PDFs mit Text (PDFBox 2.x)
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;
import java.io.IOException;
public class CreatePdfWithPdfBox { 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.beginText(); contentStream.setFont(PDType1Font.HELVETICA, 14); contentStream.newLineAtOffset(50, 700); contentStream.showText("Hallo, PDF-Welt!"); contentStream.newLineAtOffset(0, -20); contentStream.showText("Dies wurde mit Apache PDFBox erstellt."); contentStream.endText(); } document.save("output_pdfbox.pdf"); System.out.println("PDF erfolgreich erstellt: output_pdfbox.pdf"); } }}Vorteile von Apache PDFBox:
- Vollständig kostenlos (Apache 2.0-Lizenz) – geeignet für alle Projekte.
- Unterstützung für Textextraktion, Bilder, Metadaten
Auch in der Bibliothek
WebSocket-Bibliotheken für Node.js: ws, Socket.IO, uWS – ein vollständiger Überblick
Swinject Swift: Dependency Injection leicht gemacht – Komplettguide
Timber für Kotlin: Vollständige Anleitung mit Beispielen
Geolokalisierung und Karten in Java: Überblick über Bibliotheken und Werkzeuge