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 PDFlayout— construction de documents de haut niveauhtml2pdf— conversion HTML en PDFpdfa— 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")} Aussi dans la bibliothèque
Client HTTP pour TypeScript : top bibliothèques pour applications web modernes