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 Auch in der Bibliothek
Valibot für TypeScript: Komplettguide mit Beispielen
Observation Swift: Komplettleitfaden mit Beispielen
Arbeiten mit CSV in Kotlin: Bibliotheken, Parsing und Datenschreiben
Arbeiten mit CSV in PHP: Lesen, Schreiben und Datenverarbeitung
Überwachung von Rust-Anwendungen: Überblick über Tools und Bibliotheken