Génération de PDF en C# (.NET) : Aperçu complet des bibliothèques et outils
La création de documents PDF est l'une des tâches les plus courantes dans le développement d'entreprise. Rapports, factures, bons de livraison, contrats — tout cela nécessite un outil fiable pour la génération. Dans l'écosystème C# (.NET), il existe plusieurs bibliothèques puissantes, chacune avec ses propres caractéristiques. Dans cet article, nous allons passer en revue les options les plus populaires, leurs avantages et inconvénients, et fournir des exemples de code.
1. iTextSharp / iText 7 pour .NET
iText est la référence de facto dans le monde de la génération de PDF. La bibliothèque existe depuis 2000 et est activement développée. Pour .NET, la version iText 7 est disponible (package NuGet itext7).
Fonctionnalités :
- Contrôle total du contenu : texte, tableaux, images, annotations.
- Gestion des formulaires (AcroForms), signatures numériques, chiffrement.
- Prise en charge de PDF/A (archivage).
- Haute performance.
Inconvénients :
- API complexe (travail de bas niveau avec les coordonnées).
- Pour une utilisation commerciale, une licence payante est requise (AGPL pour l'open-source).
Exemple de création d'un PDF simple :
using iText.Kernel.Pdf;using iText.Layout;using iText.Layout.Element;
public void CreatePdf(string filePath){ using (var writer = new PdfWriter(filePath)) using (var pdf = new PdfDocument(writer)) using (var document = new Document(pdf)) { document.Add(new Paragraph("Bonjour le monde !")); document.Add(new Paragraph("Ceci est un PDF créé avec iText 7.")); }}2. PDFsharp
PDFsharp est une bibliothèque open-source légère pour .NET (il existe également une version pour GDI+). Elle est parfaitement adaptée aux tâches simples : création de documents avec du texte, des tableaux, des images.
Fonctionnalités :
- API simple et intuitive.
- Prise en charge des polices (y compris le cyrillique).
- Travail avec des primitives graphiques (lignes, formes).
- Gratuite (licence MIT).
Inconvénients :
- Prise en charge limitée des éléments complexes (formulaires, signets).
- Plus lent qu'iText sur de gros volumes.
Exemple :
using PdfSharp.Pdf;using PdfSharp.Drawing;
public void CreatePdf(string filePath){ using (var document = new PdfDocument()) { var page = document.AddPage(); using (var gfx = XGraphics.FromPdfPage(page)) { var font = new XFont("Arial", 20, XFontStyle.Regular); gfx.DrawString("Bonjour le monde !", font, XBrushes.Black, new XPoint(40, 100)); } document.Save(filePath); }}3. QuestPDF
QuestPDF est une bibliothèque moderne avec une API fluide, inspirée du concept "layout-first". Elle permet de décrire la structure du document de manière déclarative, ce qui simplifie grandement la création de mises en page complexes.
Fonctionnalités :
- Style déclaratif (comme WPF ou HTML).
- Pagination automatique.
- Prise en charge des tableaux, en-têtes, pieds de page.
- Version gratuite avec limitation (jusqu'à 10 pages).
Inconvénients :
- Version gratuite limitée.
- Moins de flexibilité qu'iText (difficile de dessiner des graphiques arbitraires).
Exemple :
using QuestPDF.Fluent;using QuestPDF.Helpers;using QuestPDF.Infrastructure;
public void CreatePdf(string filePath){ Document.Create(container => { container.Page(page => { page.Size(PageSizes.A4); page.Margin(30); page.Content().Column(col => { col.Item().Text("Bonjour le monde !").FontSize(20); col.Item().Text("Ceci est QuestPDF.").FontSize(14); }); }); Aussi dans la bibliothèque
Travailler avec Markdown en C# (.NET) : bibliothèques et exemples
Planificateur de tâches Swift pour iOS/macOS : EventKit et DispatchSource
Génération de rapports PDF en C++ : bibliothèque libharu et autres
Client Elasticsearch pour C++ : elasticlient et guide complet