Génération de PDF en C# (.NET) : Guide complet des bibliothèques

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



La génération de documents PDF est l'une des tâches courantes dans les applications d'entreprise et web en C#. Rapports, factures, bons de livraison, certificats — tout cela peut être facilement généré au format PDF. Dans l'écosystème .NET, il existe plusieurs bibliothèques puissantes, payantes et gratuites. Dans cet article, nous analyserons les outils les plus populaires, leurs fonctionnalités et fournirons des exemples de code.



Bibliothèques populaires pour travailler avec les PDF dans .NET



  • iTextSharp / iText 7 — l'une des bibliothèques les plus anciennes et les plus fonctionnelles. Version payante (iText 7) pour un usage commercial, mais il existe une version legacy iTextSharp sous licence LGPL.
  • PdfSharp / MigraDoc — bibliothèque gratuite et open source. Idéale pour les documents simples et les rapports.
  • QuestPDF — bibliothèque moderne avec une API fluide. Gratuite pour un usage commercial (licence MIT). Permet de créer des documents complexes avec un minimum de code.
  • IronPDF — bibliothèque payante, mais avec des fonctionnalités très puissantes : conversion HTML en PDF, gestion des formulaires, protection par mot de passe.
  • SelectPdf — un autre outil payant prenant en charge la conversion HTML en PDF et de nombreux paramètres.


Installation des bibliothèques via NuGet



Toutes les bibliothèques s'installent de manière standard via le gestionnaire de packages NuGet. Exemples d'installation :



// Pour PdfSharpInstall-Package PdfSharp

// Pour QuestPDFInstall-Package QuestPDF

// Pour iTextSharp (legacy)Install-Package iTextSharp.LGPLv2.Core


Exemple 1 : Création d'un PDF avec PdfSharp



PdfSharp est un excellent choix pour les tâches simples. Voici un exemple de création d'un document avec du texte et un tableau :



using PdfSharp.Pdf;using PdfSharp.Drawing;

class Program{ static void Main() { // Créer un nouveau document PDF PdfDocument document = new PdfDocument(); PdfPage page = document.AddPage(); XGraphics gfx = XGraphics.FromPdfPage(page);

// Dessiner du texte XFont font = new XFont("Arial", 14); gfx.DrawString("Bonjour, monde PDF !", font, XBrushes.Black, new XRect(10, 10, page.Width, page.Height), XStringFormats.TopLeft);

// Enregistrer le document document.Save("HelloWorld.pdf"); Console.WriteLine("PDF créé !"); }}


Exemple 2 : Génération d'un rapport avec QuestPDF



QuestPDF propose une API Fluent élégante. Créons une simple facture :



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

class Program{ static void Main() { Document.Create(container => { container.Page(page => { page.Size(PageSizes.A4); page.Margin(2, Unit.Centimetre); page.DefaultTextStyle(x => x.FontSize(12));

page.Header().Element(ComposeHeader); page.Content().Element(ComposeContent); page.Footer().AlignCenter().Text("Page {0} sur {1}", x => x.CurrentPageNumber(), x => x.TotalPages()); }); }).GeneratePdf("Invoice.pdf");

Console.WriteLine("Facture créée !"); }

static void ComposeHeader(IContainer container) { container.Row(row => { row.RelativeItem().Column(column => { column.Item().Text("FACTURE").Bold().FontSize(20); column.Item().Text($"Date : {DateTime.Now:dd.MM.yyyy}"); }); row.ConstantItem(100).Image(Placeholders.Image(100, 100)); }); }

static void ComposeContent(IContainer container) { container.Table(table => { // En-têtes du tableau table.ColumnsDefinition(columns =>

Recommendations