Génération de PDF en Java : aperçu des bibliothèques populaires
La création de documents PDF est l'une des tâches fréquentes dans le développement Java, tant en entreprise qu'en éducation. Rapports, factures, certificats, supports pédagogiques — tout cela peut être facilement exporté au format PDF. En Java, il existe plusieurs bibliothèques matures permettant à la fois de créer des PDF à partir de zéro et de modifier des fichiers existants. Dans cet article, nous examinerons trois outils les plus populaires : iText, Apache PDFBox et OpenPDF.
1. iText — puissant, mais avec des restrictions de licence
iText est la bibliothèque Java la plus connue pour travailler avec les PDF. Elle existe depuis l'an 2000 et prend en charge pratiquement toutes les fonctionnalités du format : texte, tableaux, images, filigranes, annotations, signatures et bien plus encore.
Cependant, iText présente une nuance importante : depuis la version 5.5.x, la bibliothèque est publiée sous une double licence. Pour une utilisation commerciale, l'achat d'une licence AGPL est requis, à moins que vous ne distribuiez votre application en open source. Pour les projets éducatifs hébergés en accès libre, la version iText 5.x sous AGPL convient.
Exemple de création d'un PDF simple avec du texte et un tableau à l'aide d'iText 5 :
import com.itextpdf.text.*;import com.itextpdf.text.pdf.PdfPTable;import com.itextpdf.text.pdf.PdfWriter;import java.io.FileOutputStream;
public class ITextExample { public static void main(String[] args) throws Exception { Document document = new Document(); PdfWriter.getInstance(document, new FileOutputStream("example_itext.pdf")); document.open();
// Titre document.add(new Paragraph("Exemple de PDF avec iText", FontFactory.getFont(FontFactory.HELVETICA_BOLD, 18)));
// Tableau PdfPTable table = new PdfPTable(3); table.addCell("Colonne 1"); table.addCell("Colonne 2"); table.addCell("Colonne 3"); table.addCell("Données 1"); table.addCell("Données 2"); table.addCell("Données 3"); document.add(table);
document.close(); System.out.println("PDF créé : example_itext.pdf"); }}2. Apache PDFBox — gratuit et open source
Apache PDFBox est une bibliothèque entièrement gratuite sous licence Apache 2.0. Elle n'a aucune restriction pour une utilisation commerciale et fournit une API de bas niveau pour travailler avec les PDF. PDFBox permet de créer des documents, d'extraire du texte, de remplir des formulaires, de travailler avec des images et même de créer des mises en page complexes.
Le principal avantage de PDFBox est sa flexibilité et l'absence de frais de licence. L'inconvénient est que son API est moins pratique pour les tâches simples que celle d'iText et nécessite plus de code pour le formatage.
Exemple de création d'un PDF avec du texte et un tableau à l'aide de 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 org.apache.pdfbox.pdmodel.common.PDRectangle;import java.io.IOException;
public class PDFBoxExample { public static void main(String[] args) throws IOException { try (PDDocument document = new PDDocument()) { PDPage page = new PDPage(PDRectangle.A4); document.addPage(page);
try (PDPageContentStream cs = new PDPageContentStream(document, page)) { // Titre cs.setFont(PDType1Font.HELVETICA_BOLD, 18); cs.beginText(); cs.newLineAtOffset(50, 750); cs.showText("Exemple de PDF avec PDFBox"); cs.endText();
// Tableau simple (simulation) cs.setFont(PDType1Font.HELVETICA, 12); cs.setLineWidth(1f); // Dessiner les lignes du tableau manuellement (simplifié) for (int i = 0; i < 4; Aussi dans la bibliothèque
Surveillance des applications Kotlin : aperçu des outils et bibliothèques
Surveillance des applications C++ : outils et bibliothèques
Cryptographie en Swift : chiffrement et hachage pour iOS/macOS