Génération de rapports PDF en C# (.NET) avec QuestPDF

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) avec QuestPDF



Dans le développement moderne sur la plateforme .NET, il est souvent nécessaire de créer des documents PDF professionnels : rapports, factures, bons de livraison, synthèses analytiques et autres documents commerciaux. La bibliothèque QuestPDF est une solution moderne, haute performance et intuitive pour la génération de PDF en C#. Elle ne nécessite pas l'installation d'utilitaires tiers (par exemple, wkhtmltopdf) et fonctionne entièrement en code managé .NET.



Dans cet article, nous allons détailler comment commencer avec QuestPDF, configurer un projet, créer un rapport simple avec un tableau, une image et un formatage de texte.



Installation et configuration



QuestPDF est distribué via NuGet. Pour l'installer, exécutez la commande dans la console du gestionnaire de packages ou via l'interface Visual Studio/Rider :



Install-Package QuestPDF


Ou via .NET CLI :



dotnet add package QuestPDF


Après l'installation, il est nécessaire d'initialiser la licence une fois. Pour une utilisation commerciale, une licence payante est requise, mais pour les tests et les petits projets, un mode gratuit avec filigrane est disponible. Pour supprimer le filigrane, ajoutez au début du programme :



QuestPDF.Settings.License = LicenseType.Community;// ou pour une utilisation commerciale :// QuestPDF.Settings.License = LicenseType.Professional;


Création du premier document PDF



QuestPDF utilise une API Fluent — vous décrivez la structure du document par des appels de méthodes séquentiels. Voici un exemple minimal :



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

// Configuration de la licence (obligatoire)QuestPDF.Settings.License = LicenseType.Community;

// Création du documentDocument.Create(container =>{ container.Page(page => { page.Size(PageSizes.A4); page.Margin(2, Unit.Centimetre); page.DefaultTextStyle(x => x.FontSize(12));

page.Header() .Text("Rapport de ventes") .SemiBold().FontSize(24).FontColor(Colors.Blue.Medium);

page.Content() .PaddingVertical(1, Unit.Centimetre) .Column(col => { col.Item().Text("Date : " + DateTime.Now.ToShortDateString()); col.Item().PaddingBottom(10).LineHorizontal(1); col.Item().Text("Voici un tableau avec les données :"); });

page.Footer() .AlignCenter() .Text(x => { x.Span("Page "); x.CurrentPageNumber(); }); });}).GeneratePdf("report.pdf");


Ce code crée un fichier PDF avec un titre, une date, une ligne horizontale et un numéro de page dans le pied de page.



Travailler avec les tableaux



L'une des tâches les plus courantes est l'affichage de données tabulaires. QuestPDF fournit une API puissante pour créer des tableaux avec un réglage automatique de la largeur des colonnes :



container.Page(page =>{    page.Size(PageSizes.A4);    page.Margin(20);

page.Content().Table(table => { // Définition des colonnes (largeur en pourcentage de l'espace disponible) table.ColumnsDefinition(columns => { columns.RelativeColumn(3); // Désignation columns.RelativeColumn(1); // Quantité columns.RelativeColumn(1); // Prix columns.RelativeColumn(1); // Montant });

// En-tête du tableau table.Header(header => { header.Cell().Background(Colors.Grey.Lighten2).Padding(5).Text("Produit"); header.Cell().Background(Colors.Grey.Lighten2).Padding(5).AlignCenter().Text("Qté"); header.Cell().Background(Colors.Grey.Lighten2).Padding(5).AlignCenter().Text("Prix"); header.Cell().Backgrou

Recommendations