Génération de rapports PDF en Java : bibliothèques et exemples

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 rapports PDF en Java : aperçu des bibliothèques et exemples de code

La création de documents PDF est l'une des tâches fréquentes dans les applications Java d'entreprise : de la génération de factures et de procès-verbaux à la construction de rapports analytiques complexes avec graphiques. Dans cet article, nous examinerons trois bibliothèques principales pour la génération de PDF en Java — iText, Apache PDFBox et JasperReports — nous comparerons leurs fonctionnalités et fournirons des exemples de code fonctionnels.



1. iText — une bibliothèque puissante et flexible

iText (actuellement iText 8.x) est l'une des bibliothèques les plus populaires pour travailler avec les PDF en Java. Elle prend en charge la création de documents à partir de zéro, la modification de documents existants, l'ajout d'images, de tableaux, de signets, de filigranes, ainsi que le travail avec des formulaires et des signatures numériques.

Licence : iText est distribué sous une double licence — AGPL (gratuit pour les projets open-source) et commerciale (pour les logiciels propriétaires).



Exemple : création d'un document PDF simple avec du texte et un tableau

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

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

// Titre document.add(new Paragraph("Rapport de ventes").setBold().setFontSize(18));

// Tableau Table table = new Table(3); table.addCell(new Cell().add(new Paragraph("Produit"))); table.addCell(new Cell().add(new Paragraph("Quantité"))); table.addCell(new Cell().add(new Paragraph("Montant"))); table.addCell("Ordinateur portable"); table.addCell("5"); table.addCell("450 000 ₽"); table.addCell("Souris"); table.addCell("12"); table.addCell("6 000 ₽");

document.add(table); document.close(); System.out.println("PDF créé !"); }}

Ce code crée un PDF avec le titre « Rapport de ventes » et un tableau de trois colonnes. iText gère automatiquement les sauts de ligne et la répartition sur les pages.



2. Apache PDFBox — une alternative légère et gratuite

Apache PDFBox est une bibliothèque open-source (licence Apache 2.0) qui permet de créer, modifier et extraire du texte de fichiers PDF. PDFBox ne nécessite pas de dépendances tierces et convient parfaitement aux tâches simples : génération de documents texte, remplissage de formulaires, extraction de données.

Inconvénient : le travail avec les tableaux et la mise en page complexe nécessite plus de code manuel qu'avec iText.



Exemple : création d'un PDF 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 java.io.File;

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

PDPageContentStream contentStream = new PDPageContentStream(document, page); // Chargement de la police (obligatoire !) PDType0Font font = PDType0Font.load(document, new File("LiberationSans-Regular.ttf")); contentStream.setFont(font, 14); contentStream.beginText(); contentStream.newLineAtOffset(50, 700); contentStream.showText("Bonjour, monde PDFBox !"); contentStream.endText(); contentStream.close();

Recommendations