Génération de PDF en Kotlin : meilleures bibliothèques et exemples de code

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 à la génération de certificats et de livres électroniques. Kotlin, grâce à sa concision et sa compatibilité avec Java, offre aux développeurs l'accès à de puissantes bibliothèques Java pour travailler avec les PDF. Dans cet article, nous examinerons trois bibliothèques principales : iText, Apache PDFBox et OpenPDF, et fournirons des exemples de code en Kotlin.



1. iText — une bibliothèque puissante et flexible



iText est l'une des bibliothèques les plus populaires pour créer et manipuler des documents PDF sur la JVM. Elle prend en charge le formatage complexe, les tableaux, les images, les filigranes, le chiffrement et bien plus encore. Pour Kotlin, un wrapper officiel iText7 avec des extensions Kotlin est disponible.



Ajout de la dépendance (Gradle)

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


Exemple : création d'un PDF 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 createSimplePdf(fileName: String) { val writer = PdfWriter(fileName) val pdf = PdfDocument(writer) val document = Document(pdf)

document.add(Paragraph("Bonjour, monde PDF en Kotlin !")) document.add(Paragraph("Ceci est un exemple d'utilisation d'iText7."))

document.close() println("PDF créé : $fileName")}

fun main() { createSimplePdf("example_itext.pdf")}


Exemple : tableau avec données

import com.itextpdf.layout.element.Tableimport com.itextpdf.layout.element.Cell

fun createTablePdf(fileName: String) { val writer = PdfWriter(fileName) val pdf = PdfDocument(writer) val document = Document(pdf)

val table = Table(3) // 3 colonnes table.addHeaderCell("Nom") table.addHeaderCell("Âge") table.addHeaderCell("Ville")

table.addCell("Anna") table.addCell("28") table.addCell("Moscou")

table.addCell("Ivan") table.addCell("35") table.addCell("Saint-Pétersbourg")

document.add(table) document.close() println("PDF avec tableau créé : $fileName")}


2. Apache PDFBox — une alternative légère et gratuite



Apache PDFBox est une bibliothèque open-source (licence Apache 2.0). Elle est idéale pour les tâches de base : création de documents, extraction de texte, remplissage de formulaires. Contrairement à iText, PDFBox ne nécessite pas de redevances de licence pour une utilisation commerciale.



Ajout de la dépendance (Gradle)

dependencies {    implementation("org.apache.pdfbox:pdfbox:2.0.27")}


Exemple : création d'un PDF avec du texte

import org.apache.pdfbox.pdmodel.PDDocumentimport org.apache.pdfbox.pdmodel.PDPageimport org.apache.pdfbox.pdmodel.PDPageContentStreamimport org.apache.pdfbox.pdmodel.font.PDType1Font

fun createPdfWithPdfBox(fileName: String) { val document = PDDocument() val page = PDPage() document.addPage(page)

val contentStream = PDPageContentStream(document, page) contentStream.beginText() contentStream.setFont(PDType1Font.HELVETICA_BOLD, 14f) contentStream.newLineAtOffset(100f, 700f) contentStream.showText("PDFBox + Kotlin = excellent !") contentStream.endText() contentStream.close()

document.save(fileName) document.close() println("PDF créé : $fileName")}


Exemple : ajout d'une image

import org.apache.pdfbox.pdmodel.graphics.image.PDImageXObject

fun createPdfWithImage(fileName: String, imagePath: String) { val document = PDDocument() val

Recommendations