Génération de PDF en Java : aperçu des 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 meilleures bibliothèques



La génération de documents PDF est l'une des tâches typiques du développement Java en entreprise. Rapports, factures, contrats, certificats — tout cela peut être facilement généré par programmation. Dans cet article, nous examinerons les trois bibliothèques les plus populaires pour travailler avec les PDF en Java : iText, Apache PDFBox et OpenPDF. Nous analyserons leurs capacités, leurs particularités et fournirons des exemples pratiques de code.



1. iText — un standard puissant et commercial



iText est de facto le standard pour la création de PDF en Java. La bibliothèque existe depuis l'an 2000 et offre une fonctionnalité très étendue : du texte simple aux formulaires complexes, filigranes, signatures numériques et travail avec PDF/A.



Licence : iText est distribué sous une double licence. Pour les projets open source (AGPL) — gratuit, pour une utilisation commerciale, l'achat d'une licence est requis.



Exemple : création d'un PDF simple avec un tableau



import com.itextpdf.kernel.pdf.PdfDocument;import com.itextpdf.kernel.pdf.PdfWriter;import com.itextpdf.layout.Document;import com.itextpdf.layout.element.Cell;import com.itextpdf.layout.element.Paragraph;import com.itextpdf.layout.element.Table;import com.itextpdf.layout.property.UnitValue;

public class ItextExample { public static void main(String[] args) throws Exception { String dest = "example_itext.pdf"; PdfWriter writer = new PdfWriter(dest); PdfDocument pdfDoc = new PdfDocument(writer); Document document = new Document(pdfDoc);

// Ajout d'un titre document.add(new Paragraph("Rapport de ventes"));

// Création d'un tableau Table table = new Table(UnitValue.createPercentArray(3)).useAllAvailableWidth(); table.addHeaderCell(new Cell().add(new Paragraph("Produit"))); table.addHeaderCell(new Cell().add(new Paragraph("Quantité"))); table.addHeaderCell(new Cell().add(new Paragraph("Prix")));

table.addCell(new Cell().add(new Paragraph("Ordinateur portable"))); table.addCell(new Cell().add(new Paragraph("10"))); table.addCell(new Cell().add(new Paragraph("1200 $")));

table.addCell(new Cell().add(new Paragraph("Souris"))); table.addCell(new Cell().add(new Paragraph("50"))); table.addCell(new Cell().add(new Paragraph("25 $")));

document.add(table); document.close();

System.out.println("PDF créé : " + dest); }}


Avantages d'iText : immense communauté, excellente documentation, prise en charge de scénarios complexes (signatures, formulaires, PDF/UA). Inconvénients : coût élevé de la licence commerciale.



2. Apache PDFBox — gratuit et open source



Apache PDFBox est une bibliothèque entièrement gratuite sous licence Apache 2.0. Elle permet non seulement de créer des PDF à partir de zéro, mais aussi de modifier des documents existants, d'extraire du texte, de travailler avec des formulaires et des images.



Exemple : création d'un document avec du texte et une image



import org.apache.pdfbox.pdmodel.PDDocument;import org.apache.pdfbox.pdmodel.PDPage;import org.apache.pdfbox.pdmodel.PDPageContentStream;import org.apache.pdfbox.pdmodel.font.PDType0Font;import org.apache.pdfbox.pdmodel.graphics.image.PDImageXObject;

import java.io.File;

public class PdfBoxExample { public static void main(String[] args) throws Exception { PDDocument document = new PDDocument(); PDPage page = new PDPage(); document.addPage(page);

PDPageContentStream contentStream = new PDPageContentStream(document, page);

// Chargement de la police (fichier de police requis) PDType0Font font = PDType0Font.load(document, new File("/usr/share/fonts/truetype/dejavu/DejaVuSans.ttf")); contentStream.setFont(font, 14); contentStream.beginText(); contentStream.newLineAtOffset(50, 700); conte

Recommendations