PDF-Generierung in Kotlin: Überblick über Bibliotheken und praktische Beispiele
Kotlin als moderne Sprache für die JVM bietet Entwicklern leistungsstarke Werkzeuge für die Arbeit mit PDF-Dokumenten. Dank der vollständigen Kompatibilität mit dem Java-Ökosystem können Sie bewährte Bibliotheken wie iText und Apache PDFBox sowie moderne Kotlin-Frameworks nutzen. In diesem Artikel betrachten wir die grundlegenden Ansätze zur PDF-Generierung mit Kotlin, zeigen Codebeispiele und vergleichen gängige Lösungen.
Warum Kotlin für die Arbeit mit PDF?
Kotlin bietet gegenüber Java bei der Arbeit mit PDF eine Reihe von Vorteilen:
- Prägnante Syntax — weniger Boilerplate-Code für die Dokumenterstellung
- Null-Sicherheit — reduziert das Risiko von Fehlern bei der Arbeit mit nullable-Feldern
- Erweiterungsfunktionen — ermöglichen die Erweiterung der Bibliotheksfunktionalität
- DSL-Builder — ideal zur Beschreibung der PDF-Struktur
- Vollständige Kompatibilität — alle Java-Bibliotheken funktionieren ohne Änderungen
Wichtige Bibliotheken zur PDF-Generierung
1. iText (iText 7 / iText 8)
iText ist die bekannteste kommerzielle Bibliothek für die Arbeit mit PDF. Für Kotlin ist sie über Java-Interop verfügbar. Enthält Module:
kernel— grundlegende PDF-Operationenlayout— High-Level-Dokumenterstellunghtml2pdf— Konvertierung von HTML in PDFpdfa— Unterstützung für PDF/A
Beispiel zur Erstellung eines einfachen PDF mit iText 7 in Kotlin:
import com.itextpdf.kernel.pdf.PdfDocumentimport com.itextpdf.kernel.pdf.PdfWriterimport com.itextpdf.layout.Documentimport com.itextpdf.layout.element.Paragraphimport java.io.FileOutputStream
fun createSimplePdf() { val writer = PdfWriter(FileOutputStream("hello_kotlin.pdf")) val pdfDoc = PdfDocument(writer) val document = Document(pdfDoc) document.add(Paragraph("Hallo, Kotlin!")) document.add(Paragraph("Dies ist ein PDF, erstellt mit iText 7")) document.close() println("PDF erfolgreich erstellt")}2. Apache PDFBox
Apache PDFBox ist eine kostenlose Open-Source-Bibliothek. Sie eignet sich hervorragend für grundlegende Aufgaben: Erstellen, Bearbeiten, Textextraktion. In Kotlin wird sie über die Java-API genutzt.
Beispiel mit PDFBox:
import org.apache.pdfbox.pdmodel.PDDocumentimport org.apache.pdfbox.pdmodel.PDPageimport org.apache.pdfbox.pdmodel.PDPageContentStreamimport org.apache.pdfbox.pdmodel.font.PDType1Fontimport java.io.File
fun createPdfWithBox() { val document = PDDocument() val page = PDPage() document.addPage(page) val contentStream = PDPageContentStream(document, page) contentStream.beginText() contentStream.setFont(PDType1Font.HELVETICA_BOLD, 14f) contentStream.newLineAtOffset(50f, 700f) contentStream.showText("PDFBox + Kotlin = ❤") contentStream.endText() contentStream.close() document.save(File("pdfbox_example.pdf")) document.close() println("Dokument gespeichert")}3. Kotlin DSL für PDF (KPDF)
KPDF ist eine native Kotlin-Bibliothek, die DSL-Builder verwendet. Sie ermöglicht die deklarative Beschreibung von Dokumenten:
// Beispiel mit hypothetischem DSL (angepasst an reale Bibliotheken)fun generateInvoice() { pdfDocument { page { paragraph("Rechnung Nr. 123") { fontSize = 24 bold() } table { row { cell("Produkt"); cell("Preis") } row { cell("Kotlin-Beratung"); cell("5000 Rubel") } } } }.save("invoice.pdf")} Auch in der Bibliothek
Kotlin QR-Code-Generator: Erstellung und Anpassung von QR-Codes