Génération de PDF en Java : aperçu des meilleures bibliothèques (iText, Apache PDFBox, OpenPDF)

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 Java : aperçu des bibliothèques iText, Apache PDFBox et OpenPDF

La création de documents PDF est l'une des tâches courantes dans les applications d'entreprise et web en Java : de la génération de rapports et de factures à l'exportation de données et à la création de livres électroniques. En Java, il existe plusieurs bibliothèques matures, chacune avec ses propres atouts. Dans cet article, nous examinerons les trois principales : iText, Apache PDFBox et OpenPDF, nous fournirons des exemples de code et vous aiderons à choisir l'outil approprié.



1. iText — puissant, mais avec une licence commerciale

iText est la bibliothèque la plus populaire pour travailler avec les PDF. Elle offre un contrôle total sur le contenu : texte, images, tableaux, formulaires, filigranes, signatures. Depuis la version 5.5.x, iText est distribué sous une double licence AGPL (gratuite pour les projets open-source) et commerciale (pour les logiciels propriétaires). La version 7.x (iText 7) est plus moderne, modulaire et haute performance.



Exemple : création d'un PDF simple avec du texte (iText 7)

import com.itextpdf.kernel.pdf.PdfDocument;import com.itextpdf.kernel.pdf.PdfWriter;import com.itextpdf.layout.Document;import com.itextpdf.layout.element.Paragraph;

public class CreatePdfWithIText { public static void main(String[] args) throws Exception { String dest = "output_itext.pdf"; PdfWriter writer = new PdfWriter(dest); PdfDocument pdf = new PdfDocument(writer); Document document = new Document(pdf); document.add(new Paragraph("Bonjour, monde PDF !")); document.add(new Paragraph("Ceci a été créé avec iText 7.")); document.close(); System.out.println("PDF créé avec succès : " + dest); }}


Avantages d'iText :

  • Flexibilité maximale : prise en charge des tableaux, listes, styles, polices, images.
  • Travail avec PDF/A, chiffrement, signatures numériques.
  • Haute performance et qualité de rendu.

Inconvénients :

  • Licence complexe (AGPL) — nécessite un achat pour une utilisation commerciale.
  • API assez volumineuse nécessitant un apprentissage.


2. Apache PDFBox — gratuit et open source

Apache PDFBox est une bibliothèque open source (licence Apache 2.0) qui permet de créer, modifier et extraire le contenu des PDF. Contrairement à iText, PDFBox ne nécessite pas de licence commerciale pour les projets propriétaires. Elle prend également en charge les formulaires, le chiffrement et l'incorporation de polices.



Exemple : création d'un PDF avec du texte (PDFBox 2.x)

import org.apache.pdfbox.pdmodel.PDDocument;import org.apache.pdfbox.pdmodel.PDPage;import org.apache.pdfbox.pdmodel.PDPageContentStream;import org.apache.pdfbox.pdmodel.font.PDType1Font;

import java.io.IOException;

public class CreatePdfWithPdfBox { public static void main(String[] args) throws IOException { try (PDDocument document = new PDDocument()) { PDPage page = new PDPage(); document.addPage(page); try (PDPageContentStream contentStream = new PDPageContentStream(document, page)) { contentStream.beginText(); contentStream.setFont(PDType1Font.HELVETICA, 14); contentStream.newLineAtOffset(50, 700); contentStream.showText("Bonjour, monde PDF !"); contentStream.newLineAtOffset(0, -20); contentStream.showText("Ceci a été créé avec Apache PDFBox."); contentStream.endText(); } document.save("output_pdfbox.pdf"); System.out.println("PDF créé avec succès : output_pdfbox.pdf"); } }}


Avantages d'Apache PDFBox :

  • Entièrement gratuit (licence Apache 2.0) — adapté à tous les projets.
  • Prise en charge de l'extraction de texte, d'images, de métadonnées

Recommendations