Génération de PDF en Kotlin : bibliothèques et outils (iText, Apache PDFBox)

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



Kotlin, en tant que langage moderne pour la JVM, offre aux développeurs des outils puissants pour travailler avec des documents PDF. Grâce à sa compatibilité totale avec l'écosystème Java, vous pouvez utiliser des bibliothèques éprouvées comme iText et Apache PDFBox, ainsi que des frameworks Kotlin modernes. Dans cet article, nous examinerons les principales approches de génération de PDF en Kotlin, fournirons des exemples de code et comparerons les solutions populaires.



Pourquoi Kotlin pour travailler avec des PDF ?



Kotlin offre plusieurs avantages par rapport à Java pour le travail avec les PDF :

  • Syntaxe concise — moins de code passe-partout pour créer des documents
  • Sécurité null — réduit le risque d'erreurs lors du travail avec des champs nullable
  • Fonctions d'extension — permettent d'étendre les fonctionnalités des bibliothèques
  • Constructeurs DSL — idéaux pour décrire la structure d'un PDF
  • Compatibilité totale — toutes les bibliothèques Java fonctionnent sans modification


Bibliothèques principales pour la génération de PDF



1. iText (iText 7 / iText 8)



iText est la bibliothèque commerciale la plus populaire pour travailler avec les PDF. Pour Kotlin, elle est accessible via l'interopérabilité Java. Elle comprend les modules :

  • kernel — opérations de base avec les PDF
  • layout — construction de documents de haut niveau
  • html2pdf — conversion HTML en PDF
  • pdfa — prise en charge de PDF/A


Exemple de création d'un PDF simple avec iText 7 en Kotlin :



import com.itextpdf.kernel.pdf.PdfDocumentimport com.itextpdf.kernel.pdf.PdfWriterimport com.itextpdf.layout.Documentimport com.itextpdf.layout.element.Paragraphimport java.io.FileOutputStream

fun createSimplePdf() { val writer = PdfWriter(FileOutputStream("hello_kotlin.pdf")) val pdfDoc = PdfDocument(writer) val document = Document(pdfDoc) document.add(Paragraph("Bonjour, Kotlin !")) document.add(Paragraph("Ceci est un PDF créé avec iText 7")) document.close() println("PDF créé avec succès")}


2. Apache PDFBox



Apache PDFBox est une bibliothèque gratuite et open source. Elle est parfaitement adaptée aux tâches de base : création, édition, extraction de texte. En Kotlin, elle est utilisée via l'API Java.



Exemple avec PDFBox :



import org.apache.pdfbox.pdmodel.PDDocumentimport org.apache.pdfbox.pdmodel.PDPageimport org.apache.pdfbox.pdmodel.PDPageContentStreamimport org.apache.pdfbox.pdmodel.font.PDType1Fontimport java.io.File

fun createPdfWithBox() { val document = PDDocument() val page = PDPage() document.addPage(page) val contentStream = PDPageContentStream(document, page) contentStream.beginText() contentStream.setFont(PDType1Font.HELVETICA_BOLD, 14f) contentStream.newLineAtOffset(50f, 700f) contentStream.showText("PDFBox + Kotlin = ❤") contentStream.endText() contentStream.close() document.save(File("pdfbox_example.pdf")) document.close() println("Document enregistré")}


3. DSL Kotlin pour PDF (KPDF)



KPDF est une bibliothèque Kotlin native utilisant des constructeurs DSL. Elle permet de décrire un document de manière déclarative :



// Exemple avec un DSL hypothétique (adaptation aux bibliothèques réelles)fun generateInvoice() {    pdfDocument {        page {            paragraph("Facture n°123") {                fontSize = 24                bold()            }            table {                row { cell("Produit"); cell("Prix") }                row { cell("Consultation Kotlin"); cell("5000 RUB") }            }        }    }.save("facture.pdf")}

Recommendations