Génération de rapports PDF en C# (.NET) : iTextSharp, QuestPDF, PDFsharp

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 C# (.NET) : aperçu des meilleures bibliothèques



La création de rapports PDF est l'une des tâches les plus courantes dans les applications d'entreprise en C# (.NET). Qu'il s'agisse d'exporter des données pour un client, de générer une facture ou un tableau de bord analytique complexe, vous aurez besoin d'un outil fiable. Dans cet article, nous analyserons trois bibliothèques principales : iTextSharp (et son successeur iText 7), QuestPDF et PDFsharp. Vous apprendrez laquelle choisir pour une tâche spécifique et verrez des exemples de code fonctionnels.



1. iTextSharp / iText 7 — classique et puissant



iTextSharp est le port de la célèbre bibliothèque Java iText pour .NET. La version iText 7 (package NuGet itext7) a été entièrement réécrite et prend en charge une API moderne. La bibliothèque permet de créer des PDF à partir de zéro, de modifier des PDF existants, d'ajouter des filigranes, des formulaires, des signets et des métadonnées.



Fonctionnalités principales :

  • Contrôle total de la structure du document (paragraphes, tableaux, images, listes).
  • Prise en charge des polices, y compris cyrilliques (TrueType).
  • Travail avec les formulaires (AcroForms) et les signatures numériques.
  • Licence : AGPL (utilisation commerciale nécessite l'achat d'une licence).


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

using iText.Kernel.Pdf;using iText.Layout;using iText.Layout.Element;

public void CreateReport(string filePath){ using (var writer = new PdfWriter(filePath)) using (var pdf = new PdfDocument(writer)) using (var document = new Document(pdf)) { document.Add(new Paragraph("Rapport de ventes") .SetFontSize(20).SetBold());

Table table = new Table(3); table.AddCell("Produit"); table.AddCell("Quantité"); table.AddCell("Prix");

table.AddCell("Ordinateur portable"); table.AddCell("10"); table.AddCell("75000");

table.AddCell("Souris"); table.AddCell("50"); table.AddCell("1500");

document.Add(table); }}


2. QuestPDF — API moderne et concise



QuestPDF est une bibliothèque relativement jeune (depuis 2021) qui gagne rapidement en popularité. Son principal atout est l'API Fluent, rappelant le travail avec HTML/CSS. Le code est lisible et compact. QuestPDF est entièrement gratuit pour une utilisation commerciale (licence MIT).



Caractéristiques :

  • Description déclarative de la mise en page : conteneurs, colonnes, lignes.
  • Prise en charge intégrée des styles, couleurs, bordures et arrière-plans.
  • Renvoi automatique du texte et ajustement des tableaux.
  • Exportation en PDF et XPS.


Exemple : création d'un rapport avec QuestPDF

using QuestPDF.Fluent;using QuestPDF.Helpers;using QuestPDF.Infrastructure;

public void CreateInvoice(string filePath){ Document.Create(container => { container.Page(page => { page.Size(PageSizes.A4); page.Margin(2, Unit.Centimetre); page.DefaultTextStyle(x => x.FontSize(12));

page.Header().Text("Facture n°123") .SemiBold().FontSize(24).FontColor(Colors.Blue.Darken2);

page.Content().Table(table => { table.ColumnsDefinition(columns => { columns.ConstantColumn(100); columns.RelativeColumn(); columns.ConstantColumn(80); });

table.Header(header => { header.Cell().Text("Désignation"); header.Cell().Text("Description"); header.Cell().Text("Montant"); });

table.Cell().Text("Consultation"); table.Cell().Text("Développement d'architecture"); table.Cell().Text

Recommendations