PDF-Generierung in Kotlin: Die besten Bibliotheken und Codebeispiele

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 hin zur Erstellung von Zertifikaten und E-Books. Kotlin bietet Entwicklern dank seiner Prägnanz und Kompatibilität mit Java Zugriff auf leistungsstarke Java-Bibliotheken für die Arbeit mit PDFs. In diesem Artikel betrachten wir drei Hauptbibliotheken: iText, Apache PDFBox und OpenPDF, und geben Codebeispiele in Kotlin.



1. iText – Eine leistungsstarke und flexible Bibliothek



iText ist eine der beliebtesten Bibliotheken zum Erstellen und Bearbeiten von PDF-Dokumenten auf der JVM. Sie unterstützt komplexe Formatierungen, Tabellen, Bilder, Wasserzeichen, Verschlüsselung und vieles mehr. Für Kotlin ist der offizielle Wrapper iText7 mit Kotlin-Erweiterungen verfügbar.



Einbindung (Gradle)

dependencies {    implementation("com.itextpdf:itext7-core:7.2.5")    implementation("com.itextpdf:itext7-kotlin-extensions:1.0.0")}


Beispiel: Erstellen eines einfachen PDFs mit Text

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

fun createSimplePdf(fileName: String) { val writer = PdfWriter(fileName) val pdf = PdfDocument(writer) val document = Document(pdf)

document.add(Paragraph("Hallo, Welt PDF auf Kotlin!")) document.add(Paragraph("Dies ist ein Beispiel für die Verwendung von iText7."))

document.close() println("PDF erstellt: $fileName")}

fun main() { createSimplePdf("example_itext.pdf")}


Beispiel: Tabelle mit Daten

import com.itextpdf.layout.element.Tableimport com.itextpdf.layout.element.Cell

fun createTablePdf(fileName: String) { val writer = PdfWriter(fileName) val pdf = PdfDocument(writer) val document = Document(pdf)

val table = Table(3) // 3 Spalten table.addHeaderCell("Name") table.addHeaderCell("Alter") table.addHeaderCell("Stadt")

table.addCell("Anna") table.addCell("28") table.addCell("Moskau")

table.addCell("Ivan") table.addCell("35") table.addCell("Sankt Petersburg")

document.add(table) document.close() println("PDF mit Tabelle erstellt: $fileName")}


2. Apache PDFBox – Eine leichte und kostenlose Alternative



Apache PDFBox ist eine Open-Source-Bibliothek (Apache 2.0-Lizenz). Sie eignet sich ideal für grundlegende Aufgaben: Dokumentenerstellung, Textextraktion, Formularausfüllung. Im Gegensatz zu iText erfordert PDFBox keine Lizenzgebühren für die kommerzielle Nutzung.



Einbindung (Gradle)

dependencies {    implementation("org.apache.pdfbox:pdfbox:2.0.27")}


Beispiel: Erstellen eines PDFs mit Text

import org.apache.pdfbox.pdmodel.PDDocumentimport org.apache.pdfbox.pdmodel.PDPageimport org.apache.pdfbox.pdmodel.PDPageContentStreamimport org.apache.pdfbox.pdmodel.font.PDType1Font

fun createPdfWithPdfBox(fileName: String) { val document = PDDocument() val page = PDPage() document.addPage(page)

val contentStream = PDPageContentStream(document, page) contentStream.beginText() contentStream.setFont(PDType1Font.HELVETICA_BOLD, 14f) contentStream.newLineAtOffset(100f, 700f) contentStream.showText("PDFBox + Kotlin = großartig!") contentStream.endText() contentStream.close()

document.save(fileName) document.close() println("PDF erstellt: $fileName")}


Beispiel: Hinzufügen eines Bildes

import org.apache.pdfbox.pdmodel.graphics.image.PDImageXObject

fun createPdfWithImage(fileName: String, imagePath: String) { val document = PDDocument() val

Empfehlungen