PDF-Generierung in Kotlin: Überblick über Bibliotheken und Werkzeuge

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



Die Generierung von PDF-Dokumenten ist eine häufige Aufgabe in modernen Anwendungen: von der Erstellung von Berichten und Rechnungen bis zum Export von Daten. Kotlin, als moderne JVM-Sprache, bietet Entwicklern Zugriff auf leistungsstarke Java-Bibliotheken für die Arbeit mit PDFs. In diesem Artikel betrachten wir die wichtigsten Werkzeuge zur PDF-Generierung in Kotlin, ihre Besonderheiten und Anwendungsbeispiele.



Beliebte Bibliotheken für die Arbeit mit PDFs in Kotlin



Da Kotlin vollständig mit Java kompatibel ist, können Sie jede Java-Bibliothek für PDFs verwenden. Die beliebtesten Optionen sind:



  • iText (Version 7/8) — eine kommerzielle Bibliothek mit offenem Quellcode (AGPL). Bietet umfangreiche Möglichkeiten: Erstellung von Dokumenten von Grund auf, Arbeit mit Formularen, Wasserzeichen, Verschlüsselung. Für die kommerzielle Nutzung ist der Erwerb einer Lizenz erforderlich.
  • Apache PDFBox — eine kostenlose Bibliothek (Apache 2.0). Ermöglicht das Erstellen von PDFs, Extrahieren von Text, Ausfüllen von Formularen. Arbeitet auf einer niedrigeren Ebene als iText, bietet aber volle Kontrolle über den Inhalt.
  • OpenPDF — ein Fork von iText 4 (LGPL/MPL). Eine leichte Bibliothek für grundlegende Aufgaben: Erstellung von Text, Tabellen, Bildern. Geeignet für einfache Projekte ohne komplexes Layout.
  • Jetpack Compose + PDF — ein moderner Ansatz: Sie beschreiben die UI mit Compose und konvertieren sie dann mit Android-Bibliotheken (z. B. android.graphics.pdf.PdfDocument) in ein PDF. Geeignet für Android-Anwendungen.


Projekteinrichtung und Hinzufügen von Abhängigkeiten



Zur Demonstration verwenden wir iText 7 und Apache PDFBox. Fügen Sie die Abhängigkeiten in build.gradle.kts hinzu:



// Für iText 7implementation("com.itextpdf:itext7-core:8.0.4")

// Für Apache PDFBoximplementation("org.apache.pdfbox:pdfbox:3.0.2")


Beispiel 1: Erstellen eines PDFs mit Text (iText 7)



Erstellen wir ein einfaches Dokument mit einer Überschrift und einem Absatz:



import com.itextpdf.kernel.pdf.PdfDocumentimport com.itextpdf.kernel.pdf.PdfWriterimport com.itextpdf.layout.Documentimport com.itextpdf.layout.element.Paragraph

fun createSimplePdf() { val writer = PdfWriter("output.pdf") val pdf = PdfDocument(writer) val document = Document(pdf)

document.add(Paragraph("Привет, мир!")) document.add(Paragraph("Это PDF, созданный с помощью iText в Kotlin."))

document.close()}


Beispiel 2: Arbeiten mit Tabellen und Kyrillisch (iText 7)



Für die korrekte Darstellung von Kyrillisch muss eine Schriftart geladen werden, die Unicode unterstützt. Wir verwenden die Standardschriftart FreeSans oder eine beliebige TTF-Schriftart:



import com.itextpdf.kernel.font.PdfFontFactoryimport com.itextpdf.kernel.pdf.PdfDocumentimport com.itextpdf.kernel.pdf.PdfWriterimport com.itextpdf.layout.Documentimport com.itextpdf.layout.element.Cellimport com.itextpdf.layout.element.Paragraphimport com.itextpdf.layout.element.Table

fun createTableWithCyrillic() { val writer = PdfWriter("table.pdf") val pdf = PdfDocument(writer) val document = Document(pdf)

// Laden einer Schriftart mit Kyrillisch-Unterstützung val font = PdfFontFactory.createFont("fonts/FreeSans.ttf", "Identity-H") document.setFont(font)

val table = Table(2) // zwei Spalten table.addCell(Cell().add(Paragraph("Имя"))) table.addCell(Cell().add(Paragraph("Возраст"))) table.addCell(Cell().add(Paragraph("Анна"))) table.addCell(Cell().add(Paragraph("25"))) table.addCell(Cell().add(Paragraph("Иван"))) table.addCell(Cell().add(Paragraph("30")))

document.add(table) document.close()}


Beispiel 3: Erstellen eines PDFs mit einem Bild (Apache PDFBox)



PDFBox erfordert detailliertere Arbeit mit Koordinaten, bietet aber Flexibilität:




                
    
    

Empfehlungen