Génération de rapports PDF en Java : aperçu des bibliothèques et outils
La création de documents PDF est l’une des tâches les plus courantes dans le développement Java en entreprise. Rapports, factures, bons de livraison, tableaux de bord analytiques – tout cela nécessite une boîte à outils flexible et performante. Dans cet article, nous allons examiner quatre bibliothèques clés pour la génération de PDF en Java : Apache PDFBox, iText, JasperReports et OpenPDF. Nous aborderons leurs points forts, des exemples de code et des scénarios d’utilisation.
1. Apache PDFBox – création et édition de bas niveau
Apache PDFBox est une bibliothèque open source (licence Apache 2.0) qui permet de créer des documents PDF à partir de zéro, ainsi que de les modifier, d’extraire du texte et de remplir des formulaires. Son principal avantage est le contrôle total sur le contenu : vous travaillez directement avec les objets du document.
Exemple de création d’un PDF simple :
import org.apache.pdfbox.pdmodel.*;import org.apache.pdfbox.pdmodel.font.PDType1Font;import java.io.IOException;
public class PdfBoxExample { 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.setFont(PDType1Font.HELVETICA_BOLD, 14); contentStream.beginText(); contentStream.newLineAtOffset(100, 700); contentStream.showText("Bonjour, monde PDFBox !"); contentStream.endText(); }
document.save("output.pdf"); System.out.println("PDF créé !"); } }}Quand l’utiliser : lorsque vous avez besoin d’un contrôle précis sur chaque élément (par exemple, pour générer des graphiques complexes ou remplir des formulaires). Ne convient pas pour de grands volumes de texte sans mise en page préalable.
2. iText – la puissance commerciale pour les rapports complexes
iText est la référence de facto dans l’industrie. Il existe en deux versions : iText 7 Community (AGPL) et iText 7 Commercial (licence commerciale). La bibliothèque prend en charge le HTML-to-PDF, la création de formulaires interactifs, les signatures numériques, le chiffrement et bien plus encore.
Exemple de génération d’un PDF avec un tableau :
import com.itextpdf.kernel.pdf.*;import com.itextpdf.layout.*;import com.itextpdf.layout.element.*;
public class ITextExample { public static void main(String[] args) throws Exception { PdfWriter writer = new PdfWriter("report.pdf"); PdfDocument pdfDoc = new PdfDocument(writer); Document document = new Document(pdfDoc);
document.add(new Paragraph("Rapport mensuel")); Table table = new Table(2); table.addCell("Indicateur"); table.addCell("Valeur"); table.addCell("Revenu"); table.addCell("1 250 000 RUB"); table.addCell("Dépense"); table.addCell("890 000 RUB"); document.add(table);
document.close(); System.out.println("Rapport prêt !"); }}Quand l’utiliser : pour des projets commerciaux nécessitant des performances élevées, une prise en charge de la mise en page complexe et des documents juridiquement significatifs (signatures, chiffrement). Attention : la version AGPL exige l’ouverture du code en cas de distribution.
3. JasperReports – génération basée sur des modèles JRXML
JasperReports n’est pas seulement une bibliothèque, mais tout un écosystème pour la création de rapports. Vous décrivez le modèle au format XML (ou via l’éditeur visuel Jaspersoft Studio), et la bibliothèque le remplit avec des données provenant de bases de données, de collections ou de JSON. Le résultat peut être exporté en PDF, Excel, HTML, CSV et d’autres formats.
Exemple de remplissage programmatique d’un modèle :
import net.sf.jasperre Aussi dans la bibliothèque
GraphQL en C++ : bibliothèque cppgraphqlgen pour créer des API
Files d'attente de tâches en TypeScript : aperçu des bibliothèques et implémentation
Journalisation en Java : aperçu des meilleures bibliothèques et solutions
GraphQL en PHP : Guide complet de la bibliothèque webonyx/graphql-php