Génération de PDF en Kotlin : aperçu des bibliothèques et outils

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 PDF en Kotlin : aperçu des bibliothèques et exemples pratiques



La génération de documents PDF est l'une des tâches courantes dans les applications modernes : de la création de rapports et de factures à l'exportation de données. Kotlin, en tant que langage JVM moderne, offre aux développeurs un accès à de puissantes bibliothèques Java pour travailler avec les PDF. Dans cet article, nous examinerons les principaux outils de génération de PDF en Kotlin, leurs caractéristiques et des exemples d'utilisation.



Bibliothèques populaires pour travailler avec les PDF en Kotlin



Puisque Kotlin est entièrement compatible avec Java, vous pouvez utiliser n'importe quelle bibliothèque Java pour les PDF. Les options les plus populaires sont :



  • iText (version 7/8) — bibliothèque commerciale open source (AGPL). Offre de nombreuses possibilités : création de documents à partir de zéro, travail avec des formulaires, des filigranes, le chiffrement. Pour une utilisation commerciale, l'achat d'une licence est nécessaire.
  • Apache PDFBox — bibliothèque gratuite (Apache 2.0). Permet de créer des PDF, d'extraire du texte, de remplir des formulaires. Fonctionne à un niveau plus bas qu'iText, mais offre un contrôle total sur le contenu.
  • OpenPDF — fork d'iText 4 (LGPL/MPL). Bibliothèque légère pour les tâches de base : création de texte, de tableaux, d'images. Convient aux projets simples sans mise en page complexe.
  • Jetpack Compose + PDF — approche moderne : vous décrivez l'interface utilisateur avec Compose, puis la convertissez en PDF à l'aide des bibliothèques Android (par exemple, android.graphics.pdf.PdfDocument). Convient aux applications Android.


Configuration du projet et ajout des dépendances



Pour la démonstration, nous utiliserons iText 7 et Apache PDFBox. Ajoutez les dépendances dans build.gradle.kts :



// Pour iText 7implementation("com.itextpdf:itext7-core:8.0.4")

// Pour Apache PDFBoximplementation("org.apache.pdfbox:pdfbox:3.0.2")


Exemple 1 : Création d'un PDF avec du texte (iText 7)



Créons un document simple avec un titre et un paragraphe :



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

fun createSimplePdf() { val writer = PdfWriter("output.pdf") val pdf = PdfDocument(writer) val document = Document(pdf)

document.add(Paragraph("Привет, мир!")) document.add(Paragraph("Это PDF, созданный с помощью iText в Kotlin."))

document.close()}


Exemple 2 : Travail avec des tableaux et le cyrillique (iText 7)



Pour un affichage correct du cyrillique, il est nécessaire de charger une police prenant en charge Unicode. Utilisons la police standard FreeSans ou toute police TTF :



import com.itextpdf.kernel.font.PdfFontFactoryimport 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.Table

fun createTableWithCyrillic() { val writer = PdfWriter("table.pdf") val pdf = PdfDocument(writer) val document = Document(pdf)

// Chargement de la police prenant en charge le cyrillique val font = PdfFontFactory.createFont("fonts/FreeSans.ttf", "Identity-H") document.setFont(font)

val table = Table(2) // deux colonnes table.addCell(Cell().add(Paragraph("Имя"))) table.addCell(Cell().add(Paragraph("Возраст"))) table.addCell(Cell().add(Paragraph("Анна"))) table.addCell(Cell().add(Paragraph("25"))) table.addCell(Cell().add(Paragraph("Иван"))) table.addCell(Cell().add(Paragraph("30")))

document.add(table) document.close()}


Exemple 3 : Création d'un PDF avec une image (Apache PDFBox)



PDFBox nécessite un travail plus détaillé avec les coordonnées, mais offre une grande flexibilité :




                
    
    

Recommendations