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