Génération de rapports PDF en C# (.NET) : aperçu des bibliothèques et exemples
Dans le développement moderne sur la plateforme .NET, la création de documents PDF est une tâche courante. Qu'il s'agisse de générer des factures, des rapports, des bordereaux ou des tableaux de bord analytiques, C# offre des outils puissants pour travailler avec les PDF. Dans cet article, nous analyserons trois bibliothèques populaires : iTextSharp, QuestPDF et PdfSharp. Vous apprendrez laquelle choisir pour une tâche spécifique et verrez des exemples de code fonctionnels.
1. iTextSharp (iText 7 pour .NET)
iTextSharp est le port de la célèbre bibliothèque Java iText pour .NET. C'est la solution la plus mature et la plus fonctionnelle, prenant en charge les mises en page complexes, les tableaux, les images, les annotations et les signatures numériques. Cependant, une utilisation commerciale nécessite l'achat d'une licence (AGPL pour l'open-source).
Installation
dotnet add package itext7Exemple : rapport simple avec tableau
using iText.Kernel.Pdf;using iText.Layout;using iText.Layout.Element;
public void CreatePdfReport(){ string filePath = "report.pdf"; using (PdfWriter writer = new PdfWriter(filePath)) using (PdfDocument pdf = new PdfDocument(writer)) using (Document document = new Document(pdf)) { document.Add(new Paragraph("Rapport des ventes de mars") .SetBold().SetFontSize(18));
Table table = new Table(3); table.AddCell("Produit"); table.AddCell("Quantité"); table.AddCell("Prix"); table.AddCell("Ordinateur portable"); table.AddCell("12"); table.AddCell("75 000 ₽"); table.AddCell("Moniteur"); table.AddCell("5"); table.AddCell("32 000 ₽");
document.Add(table); }}Avantages : flexibilité maximale, prise en charge des structures complexes, signatures numériques.
Inconvénients : API complexe pour les débutants, licence pour usage commercial.
2. QuestPDF
QuestPDF est une bibliothèque moderne avec une interface fluide et un moteur de rendu intégré. Elle permet de décrire un document de manière déclarative, similaire au HTML/CSS. Idéale pour la génération de rapports types avec des éléments répétitifs.
Installation
dotnet add package QuestPDFExemple : facture avec en-tête et tableau
using QuestPDF.Fluent;using QuestPDF.Helpers;using QuestPDF.Infrastructure;
public byte[] GenerateInvoice(){ return Document.Create(container => { container.Page(page => { page.Size(PageSizes.A4); page.Margin(20); page.Header().Text("Facture n° 12345") .SemiBold().FontSize(20).FontColor(Colors.Blue.Darken2);
page.Content().Table(table => { table.ColumnsDefinition(columns => { columns.RelativeColumn(); columns.RelativeColumn(); columns.RelativeColumn(); });
table.Header(header => { header.Cell().Background(Colors.Grey.Lighten3).Text("Service"); header.Cell().Background(Colors.Grey.Lighten3).Text("Coût"); header.Cell().Background(Colors.Grey.Lighten3).Text("Quantité"); });
table.Cell().Text("Consultation"); table.Cell().Text("5 000 ₽"); table.Cell().Text("2");
table.Cell().Text("Développement"); table.Cell().Text("15 000 ₽"); table.Cell().Text("1"); });
page.Footer().AlignCenter().Text("Merci pour votre collaboration !"); }); }).GeneratePdf();}Avantages : code simple et lisible, excellente performance, gratuit pour un usage commercial