PDF-Generierung in Kotlin: Bibliotheken und Werkzeuge (iText, Apache PDFBox)

Online Python-Trainer für Anfänger

Lernen Sie Python einfach ohne theoretische Überlastung. Lösen Sie praktische Aufgaben mit automatischer Überprüfung und schreiben Sie Code direkt im Browser.

Kurs starten

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-Operationen
  • layout — High-Level-Dokumenterstellung
  • html2pdf — Konvertierung von HTML in PDF
  • pdfa — 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")}

Empfehlungen