Chaque développeur .NET est confronté au même moment : quelqu'un vous demande de générer un PDF. Il peut s'agir d'une facture. D'un rapport. D'un contrat signé. Et soudain, vous vous retrouvez face à une douzaine de packages NuGet, dont la moitié sont abandonnés, vous demandant lequel ne vous fera pas perdre votre après-midi.
Le Bibliothèque PDF .NET L'écosystème est encombré – mais la plupart des options tombent dans deux pièges. Soit elles essaient de tout faire (et coûtent une fortune), soit elles couvrent les bases tout en tombant en panne discrètement sur tout ce qui va au-delà de “Hello World”. Trouver quelque chose entre les deux – léger, vraiment performant, à un prix raisonnable – a toujours été la partie difficile.
Xceed a sorti Bibliothèque PDF pour .NET 2.0 en mars 2026. Il permet de créer, modifier, signer et extraire des documents PDF à partir de code C# pur. Aucune dépendance à Adobe Acrobat, aucun « hack » d'interopérabilité, aucun lancement de processus externes. Il s'agit simplement d'un seul package NuGet compatible avec .NET 5 à .NET 10 et fonctionnant sous Windows, macOS et Linux.
Voici ce que cela fait réellement — avec du code que vous pouvez copier et exécuter dès aujourd'hui.
Pour commencer : un package NuGet, zéro dépendance
Installer le Bibliothèque PDF C# de NuGet :
dotnet add package Xceed.PdfLibrary.NET
Cela intègre la version 2.0.26166.7850. Le package n'a pas de dépendances externes sur .NET 5+ (seulement System.Security.Cryptography.Pkcs pour la signature numérique, qui est fournie avec le runtime). Votre fichier projet reste propre :
<Project Sdk="Microsoft.NET.Sdk">
<PropertyGroup>
<OutputType>Exe</OutputType>
<TargetFramework>net10.0</TargetFramework>
<Nullable>enable</Nullable>
<ImplicitUsings>enable</ImplicitUsings>
</PropertyGroup>
<ItemGroup>
<PackageReference Include="Xceed.PdfLibrary.NET" Version="2.0.26166.7850" />
</ItemGroup>
</Project>
Avant de créer ou de charger un PDF, définissez votre clé de licence. Vous pouvez Obtenez un essai gratuit de 45 jours depuis la page du produit :
using Xceed.PdfLibrary.NET;
Licenser.LicenseKey = "YOUR-LICENSE-KEY-HERE";
C'est tout. Pas d'installateur, pas d'enregistrement COM, pas de prérequis d'exécution au-delà du .NET lui-même.
1. Créer un fichier PDF à partir de zéro dans C#
C'est la fonctionnalité que la plupart des développeurs choisissent en premier. Voici comment vous Créer un fichier PDF C# documents avec Xceed
using var doc = PdfDocument.Create("output/hello.pdf");
var page = doc.Pages[0];
var helvetica = doc.Fonts.GetStandardFont(StandardFontType.Helvetica);
var titleStyle = TextStyle.WithFont(helvetica, 24)
.SetBrush(new SolidColorBrush(Color.DarkBlue));
var bodyStyle = TextStyle.WithFont(helvetica, 12);
// Title positioned explicitly, then body text below
page.AddText("Xceed PDF Library for .NET 2.0",
new Rectangle(50, 50, 500, 40),
titleStyle);
page.AddText(
"This document was generated entirely in C# using Xceed PdfLibrary " +
"for .NET. No Adobe Acrobat, no Interop, no external processes — " +
"just a NuGet package and a few lines of code.",
new Rectangle(50, 110, 500, 80),
bodyStyle);
// Add a second page
var page2 = doc.Pages.Add();
page2.AddText("Second Page",
new Rectangle(50, 50, 500, 40),
titleStyle);
doc.Save();
PdfDocument.Create vous donne un document avec une page vierge. AddText place le contenu à des coordonnées exactes à l'aide d'un Rectangle (x, y, largeur, hauteur), de sorte que vous contrôlez la mise en page avec précision. L'API utilise des objets de style immuables — vous créez un TextStyle une fois et le réutilisez tout au long de votre document. Par conséquent, votre code reste lisible même lors de la génération de rapports complexes sur plusieurs pages.
2. Ajouter des champs de formulaire interactifs
Besoin de PDF interactifs ? La bibliothèque prend en charge les zones de texte, les cases à cocher, les listes déroulantes, les listes, les boutons radio, les champs de date, les champs numériques et les champs de signature. Voici comment créer un formulaire d'admission simple :
using var doc = PdfDocument.Create("output/form.pdf");
var page = doc.Pages[0];
var helvetica = doc.Fonts.GetStandardFont(StandardFontType.Helvetica);
var labelStyle = TextStyle.WithFont(helvetica, 11);
page.AddText("Full Name:", new Point(50, 50), labelStyle);
var nameField = new TextBoxFormField("",
new Rectangle(150, 45, 250, 22),
labelStyle);
nameField.Name = "FullName";
page.FormFields.Add(nameField);
page.AddText("Subscribe to newsletter:", new Point(50, 90), labelStyle);
var checkBox = new CheckBoxFormField(false, new Rectangle(230, 87, 16, 16));
checkBox.Name = "Newsletter";
page.FormFields.Add(checkBox);
page.AddText("Country:", new Point(50, 130), labelStyle);
var countries = new List<ListItem>
{
new ListItem("United States", "US"),
new ListItem("Canada", "CA"),
new ListItem("United Kingdom", "UK"),
new ListItem("France", "FR"),
new ListItem("Germany", "DE")
};
var combo = new ComboBoxFormField(countries, new Rectangle(150, 125, 180, 22));
combo.Name = "Country";
page.FormFields.Add(combo);
doc.Save();
Chaque champ de formulaire prend un Rectangle pour le positionnement et un TextStyle pour l'apparence. En conséquence, vous contrôlez la disposition exacte. Si vous chargez plus tard ce PDF, vous pouvez relire les valeurs des champs, ce qui le rend utile pour les flux de travail aller-retour où les utilisateurs remplissent des formulaires et votre backend traite les réponses.
3. Créer des signets et des filigranes hiérarchiques
La version 2.0 a remanié le système de favoris avec une classe dédiée BookmarkCollection. Vous pouvez désormais créer des hiérarchies de favoris parent-enfant, les styliser avec du texte gras et italique, et même définir des couleurs de titre. Pendant ce temps, les filigranes s'appliquent sur tout le document en un seul appel :
using var doc = PdfDocument.Create("output/bookmarks.pdf");
var helvetica = doc.Fonts.GetStandardFont(StandardFontType.Helvetica);
var titleStyle = TextStyle.WithFont(helvetica, 20);
var page1 = doc.Pages[0];
page1.AddParagraph("Chapter 1: Introduction",
titleStyle,
new ParagraphStyle(ParagraphHorizontalAlignment.Left));
var page2 = doc.Pages.Add();
page2.AddParagraph("Chapter 2: Getting Started",
titleStyle,
new ParagraphStyle(ParagraphHorizontalAlignment.Left));
var page3 = doc.Pages.Add();
page3.AddParagraph("Chapter 3: Advanced Topics",
titleStyle,
new ParagraphStyle(ParagraphHorizontalAlignment.Left));
// Hierarchical bookmarks (TargetPage is a zero-based page index)
var bk1 = new Bookmark("Introduction") { TargetPage = 0, IsBold = true };
var bk2 = new Bookmark("Getting Started") { TargetPage = 1, IsBold = true };
var bk3 = new Bookmark("Advanced Topics") { TargetPage = 2, IsBold = true };
// Nest a child bookmark
var bk3Child = new Bookmark("Digital Signatures") { TargetPage = 2 };
bk3.Children.Add(bk3Child);
doc.Bookmarks.Add(bk1);
doc.Bookmarks.Add(bk2);
doc.Bookmarks.Add(bk3);
// Watermark applied to all pages
var watermarkStyle = TextStyle.WithFont(helvetica, 48)
.SetBrush(new SolidColorBrush(new Color(200, 200, 200)))
.SetRotationAngle(45);
doc.Watermarks.Add(new Watermark("DRAFT", watermarkStyle));
doc.Save();
Les signets et les filigranes sont importants pour tout document de plus de quelques pages. Plus précisément, les signets offrent aux lecteurs un panneau de navigation dans leur visionneuse PDF, tandis que les filigranes communiquent l'état du document sans modifier le contenu réel.
4. Extraire le texte et les métadonnées des PDF existants
Le chargement et la lecture des PDF sont tout aussi simples. Vous pouvez extraire du texte de chaque page, lire les valeurs des champs de formulaire, accéder aux arbres de signets et récupérer les métadonnées du document :
using var doc = PdfDocument.Load("output/hello.pdf");
for (int i = 0; i < doc.Pages.Count; i++)
{
string? text = doc.Pages[i].Text;
Console.WriteLine($"--- Page {i + 1} ---");
Console.WriteLine(text?.Trim() ?? "(empty)");
}
Console.WriteLine($"Total pages: {doc.Pages.Count}");
Pour une extraction plus ciblée, utilisez GetTextFromArea avec un Rectangle pour extraire le texte d'une région spécifique de la page. De plus, la collection Words fournit des objets de mots individuels avec leurs boîtes englobantes, ce qui est utile pour créer des index de recherche ou analyser la disposition des documents.
5. Diviser et fusionner des documents
La version 2.0 a ajouté des options de fractionnement flexibles. Vous pouvez extraire une seule page, une plage, ou diviser chaque page dans son propre fichier :
using var doc = PdfDocument.Load("output/bookmarks.pdf");
// Extract page 2 (index 1) to its own file
doc.Split(SplitByPageOptions.ToPath(1, "output/chapter2-only.pdf"));
La fusion fonctionne dans l'autre sens : combinez plusieurs instances de PdfDocument en une seule à l'aide de MergeOptions. Vous pouvez également scinder par signets avec SplitByBookmarkOptions, de sorte qu'un document organisé en chapitres puisse être automatiquement divisé à chaque limite de chapitre. Par conséquent, les flux de traitement par lots deviennent plus faciles à construire.
6. Signatures numériques et certification
Voici la fonctionnalité phare de la version 2.0. Vous pouvez désormais signer des documents PDF avec des certificats PFX, valider les signatures existantes et certifier des documents pour empêcher toute modification ultérieure. La bibliothèque prend en charge les algorithmes de hachage SHA-256, SHA-384 et SHA-512.
La signature verrouille le document à ce stade — toute modification ultérieure invalide la signature, exactement comme l'exige la spécification PDF. Pour les flux de travail axés sur la conformité (contrats, documents juridiques, dossiers médicaux), cette seule fonctionnalité justifie la mise à niveau depuis la version 1.0.
7. Images, hyperliens et dessin
Au-delà du texte et des formulaires, vous pouvez insérer des images à partir de chemins de fichiers ou de flux, ajouter des hyperliens cliquables à des régions spécifiques et dessiner des formes sur le canevas graphique d'une page. L'objet Canvas prend en charge les lignes, les rectangles et le placement d'images avec un contrôle précis des coordonnées. Comme le système de coordonnées utilise des points (1/72 pouce), vous obtenez un positionnement précis pour l'impression.
Comparaison avec d'autres bibliothèques PDF C#
Le paysage des PDF .NET offre de nombreuses options. Voici une comparaison honnête :
| Fonctionnalité | Xceed PDF Library | iText 7 | QuestPDF | PDFsharp | IronPDF |
|---|---|---|---|---|---|
| Créer des PDF à partir de code | Oui | Oui | Oui | Oui | Oui (via HTML) |
| Charger et modifier des PDF existants | Oui | Oui | Non | Limité | Oui |
| Champs de formulaire (lecture/écriture) | Oui | Oui | Non | Non | Limité |
| Signatures numériques | Oui (v2.0) | Oui | Non | Non | Oui |
| Extraction de texte | Oui | Oui | Non | Non | Oui |
| Diviser et fusionner | Oui | Oui | Non | Oui | Oui |
| Multiplateforme | Oui | Oui | Oui | Partiel | Oui |
| Licence | Commercial ($850) | AGPL ou $15K+/an | MIT (<$1M) | MIT | $749+ |
| Taille du package NuGet | ~940 Ko | ~30 Mo+ | ~2 Mo | ~4 Mo | ~50 Mo et plus |
iText 7 C'est l'option la plus complète, mais sa licence AGPL vous oblige à mettre votre application en open source — ou à payer plus de $15 000 par an pour une licence commerciale. Pour de nombreuses équipes, c'est tout simplement hors de question.
QuestPDF Il excelle dans la création de documents de grande qualité grâce à son API intuitive, et il est gratuit tant que le chiffre d'affaires ne dépasse pas $1M. Cependant, il ne permet que de générer de nouveaux fichiers PDF. Il ne peut pas charger de documents existants, lire les champs de formulaire, extraire du texte ni ajouter de signatures.
PDFsharp est gratuit et open-source, mais il manque de prise en charge des champs de formulaire, des signatures numériques et d'un comportement fiable multiplateforme. De même, ses capacités d'extraction de texte sont minimes.
IronPDF adopte une approche de HTML vers PDF avec un moteur Chromium, ce qui produit un résultat pixel-perfect mais livre un package d'environ 50 Mo. En revanche, le package de Xceed est inférieur à 1 Mo car il travaille directement avec la spécification PDF au lieu de regrouper un moteur de navigateur.
Xceed's Bibliothèque PDF .NET se situe dans un juste milieu pratique : il prend en charge l'intégralité du cycle de vie (création, modification, signature, extraction) pour un coût unique de $849,95. Pas d’abonnement récurrent, pas de complications liées à l’AGPL. Pour les entreprises dont le chiffre d’affaires est inférieur à $1M, une licence pour petite entreprise ramène ce coût à $659,95.
Quand ne pas utiliser la bibliothèque PDF Xceed
L'honnêteté compte. Voici des cas où un outil différent pourrait mieux vous servir :
- Rendu HTML vers PDFSi vos PDF sont essentiellement des pages web stylisées, un moteur basé sur HTML comme IronPDF ou Puppeteer sera plus rapide à développer. Xceed fonctionne au niveau des primitives PDF (texte, rectangles, coordonnées), pas au niveau CSS.
- Conception de documents haute fidélitéL'API de mise en page fluide de QuestPDF est mieux adaptée aux modèles de factures ou de rapports pixel par pixel où vous souhaitez une conception déclarative basée sur des composants.
- Requise libre et open-source: Si votre projet exige une licence MIT/Apache, PDFsharp ou QuestPDF sont vos meilleures options. Xceed est un produit commercial.
Choisissez l'outil qui correspond à vos besoins réels, pas celui qui a le plus de fonctionnalités sur le papier.
Exécution du projet de démonstration sur .NET 10
Chaque extrait de code dans cet article provient d'un projet de démonstration fonctionnel. Vous pouvez le trouver dans le Dossier XceedPdfDemo aux côtés de cet article. Le projet cible .NET 10 et compile sans aucune erreur.
Pour l'exécuter vous-même :
- Cloner le projet et l'ouvrir dans Visual Studio 2022 ou Rider
- Insérez votre clé de licence dans Program.cs (obtenez une essai gratuit de 45 jours)
- Courir avec dotnet exécuter
- Vérifiez le dossier output/ pour les PDF générés
La démo couvre tous les sept scénarios : création de documents, champs de formulaire, signets avec filigranes, extraction de texte et division de documents.
Essayez Xceed PDF Library pour .NET
Créez, modifiez, signez et extrayez des fichiers PDF à partir de C# pur — sous Windows, macOS ou Linux. Un seul package NuGet, aucune dépendance externe.
Quoi de neuf dans la version 2.0
La version de mars 2026 a apporté changements significatifs to the library. Because version 2.0 removed the dependency on Xceed.Drawing.NET.dll, colors now come directly from the Xceed.PdfLibrary namespace. Furthermore, PageSettings properties became immutable — you use setter methods like SetHeight and SetWidth instead of direct assignment.
Key additions in 2.0:
- Digital signatures and certification — sign with PFX, validate existing signatures, certify documents
- Image insertion — add images from streams or file paths via the Canvas API
- Hierarchical bookmarks — parent-child relationships with styling (bold, italic, color)
- Page manipulation — insert at specific indices, reorder with Move, remove pages
- Document splitting — split by page ranges or by bookmark structure
- RTL text support — right-to-left text direction for Arabic and Hebrew
- Font embedding modes — Simple for western languages (smaller files), Full for CJK support
These are breaking changes from 1.0. If you’re upgrading, review the notes de mise à jour carefully — property names like StrokeColor (now Color) and StrokeWidth (now Thickness) on Pen objects have changed.
Questions fréquemment posées
Le package .NET de la bibliothèque Xceed PDF fonctionne-t-il sous Linux et macOS ?
Yes. The Bibliothèque PDF .NET package targets .NET 5+ with no Windows-specific dependencies. It runs on any platform that .NET supports — Windows, macOS, and Linux. You can use it in ASP.NET Core web applications, Azure Functions, Docker containers, and any other .NET host.
Puis-je créer des fichiers PDF dans C# sans avoir installé Adobe Acrobat ?
Absolutely. You can Créer un fichier PDF C# files by writing the PDF specification directly — no Adobe Acrobat, no Office Interop, no external processes. You just need the NuGet package and a .NET runtime. This makes it ideal for server-side generation where installing desktop software isn’t an option.
Comment cette bibliothèque PDF C# gère-t-elle les signatures numériques ?
La version 2.0 a ajouté une prise en charge complète de la signature numérique. Vous pouvez signer des documents à l'aide de certificats PFX avec les algorithmes SHA-256, SHA-384 ou SHA-512. La bibliothèque valide également les signatures existantes et prend en charge la certification de documents, ce qui empêche toute modification ultérieure après la signature. Pour les flux de travail de conformité, vous pouvez contrôler quels champs de formulaire restent modifiables après une signature.
What’s the difference between Xceed PDF Library and Xceed Words for .NET?
Words for .NET creates and edits Microsoft Word (.docx) documents. Bibliothèque PDF pour .NET creates and edits PDF documents. They serve different formats, but you can bundle both for $100 during the current promotional offer. If your workflow involves generating Word documents and then converting to PDF, you might want both.
Existe-t-il une version d'essai gratuite de la bibliothèque PDF Xceed C# ?
Yes. Xceed offers a essai gratuit de 45 jours with full functionality. The library compiles without a license key, but you need one to Créer un fichier PDF C# documents at runtime. After the trial, a standard license costs $849.95 (one-time, no subscription). Small businesses under $1M revenue qualify for $659.95.
Puis-je extraire du texte et des données de champs de formulaire à partir de PDF existants ?
Yes. Load any PDF with PdfDocument.Load, then access each page’s Text property for full-text content or GetTextFromArea for region-based extraction. Form field values are available through the FormFields collection — you can read TextBoxFormField.Text, CheckBoxFormField.IsChecked, and other typed properties. Additionally, the Words collection provides individual word objects with positional data.