Generierung von PDF-Berichten in Kotlin: Die Bibliothek iText 7

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

Generierung von PDF-Berichten in Kotlin mit iText 7



In der modernen Entwicklung entsteht häufig die Notwendigkeit, strukturierte PDF-Dokumente zu erstellen: Berichte, Rechnungen, Verträge oder Analyseergebnisse. Die Sprache Kotlin eignet sich aufgrund ihrer Prägnanz und Kompatibilität mit Java hervorragend für diese Aufgabe. Eine der leistungsstärksten und beliebtesten Bibliotheken für die Arbeit mit PDF ist iText 7 (früher iTextSharp für .NET). In diesem Artikel werden wir untersuchen, wie man damit professionelle PDF-Berichte in Kotlin generiert.



Warum iText 7?

  • Vollständige Kontrolle über den Inhalt: Text, Tabellen, Bilder, Schriftarten.
  • Leistung: Die Bibliothek ist für die Arbeit mit großen Dokumenten optimiert.
  • Plattformunabhängigkeit: Läuft auf JVM, Android und im Web.
  • Lizenzierung: AGPL für Open-Source-Projekte oder kommerzielle Lizenz.


Installation (Gradle)

Fügen Sie die Abhängigkeit in build.gradle.kts hinzu:

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


Basisbeispiel: "Hallo, PDF!"

Erstellen wir ein einfaches PDF-Dokument mit Text:

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

fun main() { val writer = PdfWriter("hello.pdf") val pdf = PdfDocument(writer) val document = Document(pdf)

document.add(Paragraph("Hallo, PDF-Welt in Kotlin!")) document.close() println("PDF erstellt: hello.pdf")}


Erstellung eines Berichts mit Tabellen und Stilen

Für einen echten Bericht wird mehr als nur Text benötigt. Fügen wir eine Tabelle, Überschriften und Stile hinzu:

import com.itextpdf.kernel.colors.ColorConstantsimport 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.Tableimport com.itextpdf.layout.properties.UnitValue

fun generateReport() { val writer = PdfWriter("report.pdf") val pdf = PdfDocument(writer) val document = Document(pdf)

// Überschrift val title = Paragraph("Monatlicher Verkaufsbericht") .setFontSize(20) .setBold() .setTextAlignment(com.itextpdf.layout.properties.TextAlignment.CENTER) document.add(title)

// Tabelle val table = Table(UnitValue.createPercentArray(floatArrayOf(1f, 2f, 1.5f, 1.5f))) table.setWidth(UnitValue.createPercentValue(100))

// Tabellenüberschriften val headers = listOf("ID", "Produkt", "Menge", "Preis") headers.forEach { header -> val cell = Cell().add(Paragraph(header).setBold()) cell.setBackgroundColor(ColorConstants.LIGHT_GRAY) table.addCell(cell) }

// Daten val data = listOf( listOf("1", "Laptop", "3", "150000"), listOf("2", "Maus", "10", "5000"), listOf("3", "Tastatur", "5", "12500") ) data.forEach { row -> row.forEach { value -> table.addCell(Cell().add(Paragraph(value))) } }

document.add(table) document.close() println("Bericht erstellt: report.pdf")}

fun main() { generateReport()}


Hinzufügen von Bildern und Stilen

Oft müssen Logos oder Grafiken in Berichte eingefügt werden. iText 7 unterstützt Bilder:

import com.itextpdf.kernel.pdf.PdfDocumentimport com.itextpdf.kernel.pdf.PdfWriterimport com.itextpdf.layout.Documentimport com.itextpdf.layout.element.Imageimport com.itextpdf.io.image.ImageDataFactory

fun addImageExample() { val writer = PdfWriter("report_with_image.pdf") val pdf = PdfDocument(writer) val document = Documen

Empfehlungen