Génération de rapports PDF en Kotlin : bibliothèque iText 7

Formateur Python en ligne pour débutants

Apprenez Python facilement sans surcharge théorique. Résolvez des tâches pratiques avec vérification automatique et écrivez du code directement dans le navigateur.

Start Course

Génération de rapports PDF en Kotlin avec iText 7



Dans le développement moderne, il est souvent nécessaire de créer des documents PDF structurés : rapports, factures, contrats ou analyses. Le langage Kotlin, grâce à sa concision et sa compatibilité avec Java, est parfaitement adapté à cette tâche. L'une des bibliothèques les plus puissantes et populaires pour travailler avec les PDF est iText 7 (anciennement iTextSharp pour .NET). Dans cet article, nous verrons comment générer des rapports PDF professionnels en Kotlin avec cette bibliothèque.



Pourquoi iText 7 ?

  • Contrôle total sur le contenu : texte, tableaux, images, polices.
  • Performance : la bibliothèque est optimisée pour les grands documents.
  • Multiplateforme : fonctionne sur JVM, Android et le web.
  • Licence : AGPL pour les projets open source ou licence commerciale.


Installation (Gradle)

Ajoutez la dépendance dans build.gradle.kts :

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


Exemple de base : "Hello, PDF!"

Créons un document PDF très simple avec du texte :

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("Bonjour, monde PDF en Kotlin !")) document.close() println("PDF créé : hello.pdf")}


Création d'un rapport avec tableaux et styles

Pour un vrai rapport, il faut plus que du simple texte. Ajoutons un tableau, des en-têtes et des styles :

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)

// Titre val title = Paragraph("Rapport mensuel des ventes") .setFontSize(20) .setBold() .setTextAlignment(com.itextpdf.layout.properties.TextAlignment.CENTER) document.add(title)

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

// En-têtes du tableau val headers = listOf("ID", "Produit", "Quantité", "Prix") headers.forEach { header -> val cell = Cell().add(Paragraph(header).setBold()) cell.setBackgroundColor(ColorConstants.LIGHT_GRAY) table.addCell(cell) }

// Données val data = listOf( listOf("1", "Ordinateur portable", "3", "150000"), listOf("2", "Souris", "10", "5000"), listOf("3", "Clavier", "5", "12500") ) data.forEach { row -> row.forEach { value -> table.addCell(Cell().add(Paragraph(value))) } }

document.add(table) document.close() println("Rapport créé : report.pdf")}

fun main() { generateReport()}


Ajout d'images et de styles

Il est souvent nécessaire d'insérer des logos ou des graphiques dans les rapports. iText 7 prend en charge les images :

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

Recommendations