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 Auch in der Bibliothek
Prometheus-Metriken in Rust: Die Bibliotheken prometheus und metrics-exporter-prometheus
Go Validator: Vollständige Anleitung mit Beispielen
Kotlin Task Scheduler: Überblick und Anwendungsbeispiele
Arbeiten mit CSV in Kotlin: Bibliotheken, Parsing und Datenschreiben
Konfiguration von Kotlin-Anwendungen: Bibliotheken und Werkzeuge zur Verwaltung von Einstellungen