{"id":3567,"date":"2026-03-18T20:09:27","date_gmt":"2026-03-18T20:09:27","guid":{"rendered":"https:\/\/xceed.com\/?p=3567"},"modified":"2026-03-30T14:13:15","modified_gmt":"2026-03-30T14:13:15","slug":"pdf-library-dotnet-xceed-2026","status":"publish","type":"post","link":"https:\/\/xceed.com\/fr\/blog\/tutorials\/pdf-library-dotnet-xceed-2026\/","title":{"rendered":"7 Things You Can Do with a PDF Library .NET Developers Actually Want to Use"},"content":{"rendered":"\t\t<div data-elementor-type=\"wp-post\" data-elementor-id=\"3567\" class=\"elementor elementor-3567\" data-elementor-post-type=\"post\">\n\t\t\t\t<div class=\"elementor-element elementor-element-220e4a50 e-flex e-con-boxed e-con e-parent\" data-id=\"220e4a50\" data-element_type=\"container\" data-e-type=\"container\">\n\t\t\t\t\t<div class=\"e-con-inner\">\n\t\t\t\t<div class=\"elementor-element elementor-element-065897b elementor-widget elementor-widget-text-editor\" data-id=\"065897b\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"text-editor.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t\t\t\t\t<article>\n<style>\n  .cta-box {\n    background: linear-gradient(145deg, #ff8441 0%, #ff772e 40%, #ff7429 100%);\n    color: #fff;\n    border-radius: 12px;\n    padding: 1.5rem 1.75rem;\n    margin: 2rem 0;\n    box-sizing: border-box;\n    box-shadow: 0 8px 24px rgba(0,0,0,0.08), 0 4px 10px rgba(168,63,8,0.15), inset 0 1px 0 rgba(255,255,255,0.12);\n  }\n  .cta-box h3 { margin: 0 0 0.5rem 0; font-size: 1.25rem; font-weight: 700; color: #fff; }\n  .cta-box p { margin: 0 0 1rem 0; font-size: 1rem; line-height: 1.5; color: #fff; opacity: 0.98; }\n  .cta-box a.cta-link { display: inline-block; background: #fff; color: #ff671b; text-decoration: none; font-weight: 600; padding: 0.5rem 1rem; border-radius: 8px; margin-right: 0.75rem; margin-top: 0.25rem; font-size: 0.9375rem; }\n  .cta-box a.cta-link:hover { background: #f5f5f5; }\n  pre[class*=\"language-\"] { margin: 2rem 0 !important; padding: 1rem 1.25rem !important; overflow-x: auto !important; font-size: 0.9rem !important; line-height: 1.5 !important; border-radius: 10px !important; background: #1e1e1e !important; border: 1px solid #333 !important; color: #d4d4d4 !important; }\n  pre[class*=\"language-\"] code { background: none !important; padding: 0 !important; color: #d4d4d4 !important; font-family: Consolas, Monaco, 'Courier New', monospace !important; }\n  pre[class*=\"language-\"] code span { color: inherit; }\n  pre[class*=\"language-\"] .token.tag { color: #569cd6 !important; }\n  pre[class*=\"language-\"] .token.attr-name { color: #9cdcfe !important; }\n  pre[class*=\"language-\"] .token.attr-value { color: #ce9178 !important; }\n  pre[class*=\"language-\"] .token.punctuation { color: #808080 !important; }\n  pre[class*=\"language-\"] .token.namespace { color: #4ec9b0 !important; }\n  pre[class*=\"language-\"] .token.keyword { color: #569cd6 !important; }\n  pre[class*=\"language-\"] .token.class-name { color: #4ec9b0 !important; }\n  pre[class*=\"language-\"] .token.string { color: #ce9178 !important; }\n  pre[class*=\"language-\"] .token.comment { color: #6a9955 !important; }\n  pre[class*=\"language-\"] .token.property { color: #9cdcfe !important; }\n  pre[class*=\"language-\"] .token.operator { color: #d4d4d4 !important; }\n<\/style>\n\n<p>Every .NET developer eventually faces the same moment: someone asks you to generate a PDF. Maybe it&#8217;s an invoice. Maybe a report. Maybe a signed contract. And suddenly you&#8217;re staring at a dozen NuGet packages, half of them abandoned, wondering which one won&#8217;t waste your afternoon.<\/p>\n\n<p>The <strong>PDF library .NET<\/strong> ecosystem is crowded \u2014 but most options fall into two traps. They either try to do everything (and cost a fortune), or they cover the basics while quietly breaking on anything beyond &#8220;Hello World.&#8221; Finding something in the middle \u2014 lightweight, genuinely capable, reasonably priced \u2014 has always been the hard part.<\/p>\n\n<p>Xceed released <a href=\"https:\/\/xceed.com\/products\/net\/pdf-library-for-net\/\">PDF Library for .NET 2.0<\/a> in March 2026. It creates, edits, signs, and extracts PDF documents from pure C# code. No Adobe Acrobat dependency, no Interop hacks, no spawning external processes. Just a single NuGet package that targets .NET 5 through .NET 10 and runs on Windows, macOS, and Linux.<\/p>\n\n<p>Here&#8217;s what it actually does \u2014 with code you can copy and run today.<\/p>\n\n<h2>Getting started: one NuGet package, zero dependencies<\/h2>\n\n<p>Install the <strong>C# PDF library<\/strong> from NuGet:<\/p>\n\n<pre class=\"language-bash\"><code><span class=\"token function\">dotnet<\/span> add package Xceed.PdfLibrary.NET<\/code><\/pre>\n\n<p>That pulls in version 2.0.26166.7850. The package has no external dependencies on .NET 5+ (only System.Security.Cryptography.Pkcs for digital signing, which ships with the runtime). Your project file stays clean:<\/p>\n\n<pre class=\"language-xml\"><code><span class=\"token tag\"><span class=\"token punctuation\">&lt;<\/span><span class=\"token tag\">Project<\/span> <span class=\"token attr-name\">Sdk<\/span><span class=\"token punctuation\">=<\/span><span class=\"token attr-value\">\"Microsoft.NET.Sdk\"<\/span><span class=\"token punctuation\">&gt;<\/span><\/span>\n  <span class=\"token tag\"><span class=\"token punctuation\">&lt;<\/span><span class=\"token tag\">PropertyGroup<\/span><span class=\"token punctuation\">&gt;<\/span><\/span>\n    <span class=\"token tag\"><span class=\"token punctuation\">&lt;<\/span><span class=\"token tag\">OutputType<\/span><span class=\"token punctuation\">&gt;<\/span><\/span>Exe<span class=\"token tag\"><span class=\"token punctuation\">&lt;\/<\/span><span class=\"token tag\">OutputType<\/span><span class=\"token punctuation\">&gt;<\/span><\/span>\n    <span class=\"token tag\"><span class=\"token punctuation\">&lt;<\/span><span class=\"token tag\">TargetFramework<\/span><span class=\"token punctuation\">&gt;<\/span><\/span>net10.0<span class=\"token tag\"><span class=\"token punctuation\">&lt;\/<\/span><span class=\"token tag\">TargetFramework<\/span><span class=\"token punctuation\">&gt;<\/span><\/span>\n    <span class=\"token tag\"><span class=\"token punctuation\">&lt;<\/span><span class=\"token tag\">Nullable<\/span><span class=\"token punctuation\">&gt;<\/span><\/span>enable<span class=\"token tag\"><span class=\"token punctuation\">&lt;\/<\/span><span class=\"token tag\">Nullable<\/span><span class=\"token punctuation\">&gt;<\/span><\/span>\n    <span class=\"token tag\"><span class=\"token punctuation\">&lt;<\/span><span class=\"token tag\">ImplicitUsings<\/span><span class=\"token punctuation\">&gt;<\/span><\/span>enable<span class=\"token tag\"><span class=\"token punctuation\">&lt;\/<\/span><span class=\"token tag\">ImplicitUsings<\/span><span class=\"token punctuation\">&gt;<\/span><\/span>\n  <span class=\"token tag\"><span class=\"token punctuation\">&lt;\/<\/span><span class=\"token tag\">PropertyGroup<\/span><span class=\"token punctuation\">&gt;<\/span><\/span>\n\n  <span class=\"token tag\"><span class=\"token punctuation\">&lt;<\/span><span class=\"token tag\">ItemGroup<\/span><span class=\"token punctuation\">&gt;<\/span><\/span>\n    <span class=\"token tag\"><span class=\"token punctuation\">&lt;<\/span><span class=\"token tag\">PackageReference<\/span> <span class=\"token attr-name\">Include<\/span><span class=\"token punctuation\">=<\/span><span class=\"token attr-value\">\"Xceed.PdfLibrary.NET\"<\/span> <span class=\"token attr-name\">Version<\/span><span class=\"token punctuation\">=<\/span><span class=\"token attr-value\">\"2.0.26166.7850\"<\/span> <span class=\"token punctuation\">\/&gt;<\/span><\/span>\n  <span class=\"token tag\"><span class=\"token punctuation\">&lt;\/<\/span><span class=\"token tag\">ItemGroup<\/span><span class=\"token punctuation\">&gt;<\/span><\/span>\n<span class=\"token tag\"><span class=\"token punctuation\">&lt;\/<\/span><span class=\"token tag\">Project<\/span><span class=\"token punctuation\">&gt;<\/span><\/span><\/code><\/pre>\n\n<p>Before creating or loading any PDF, set your license key. You can <a href=\"https:\/\/xceed.com\/products\/net\/pdf-library-for-net\/\">grab a free 45-day trial<\/a> from the product page:<\/p>\n\n<pre class=\"language-csharp\"><code><span class=\"token keyword\">using<\/span> <span class=\"token class-name\">Xceed<\/span><span class=\"token punctuation\">.<\/span>PdfLibrary<span class=\"token punctuation\">.<\/span>NET<span class=\"token punctuation\">;<\/span>\n\n<span class=\"token class-name\">Licenser<\/span><span class=\"token punctuation\">.<\/span>LicenseKey <span class=\"token operator\">=<\/span> <span class=\"token string\">\"YOUR-LICENSE-KEY-HERE\"<\/span><span class=\"token punctuation\">;<\/span><\/code><\/pre>\n\n<p>That&#8217;s it. No installer, no COM registration, no runtime prerequisites beyond .NET itself.<\/p>\n\n<h2>1. Create a PDF from scratch in C#<\/h2>\n\n<p>This is the feature most developers reach for first. Here&#8217;s how you <strong>create PDF C#<\/strong> documents with Xceed:<\/p>\n\n<pre class=\"language-csharp\"><code><span class=\"token keyword\">using<\/span> <span class=\"token keyword\">var<\/span> doc <span class=\"token operator\">=<\/span> <span class=\"token class-name\">PdfDocument<\/span><span class=\"token punctuation\">.<\/span><span class=\"token function\">Create<\/span><span class=\"token punctuation\">(<\/span><span class=\"token string\">\"output\/hello.pdf\"<\/span><span class=\"token punctuation\">)<\/span><span class=\"token punctuation\">;<\/span>\n\n<span class=\"token keyword\">var<\/span> page <span class=\"token operator\">=<\/span> doc<span class=\"token punctuation\">.<\/span>Pages<span class=\"token punctuation\">[<\/span><span class=\"token string\">0<\/span><span class=\"token punctuation\">]<\/span><span class=\"token punctuation\">;<\/span>\n<span class=\"token keyword\">var<\/span> helvetica <span class=\"token operator\">=<\/span> doc<span class=\"token punctuation\">.<\/span>Fonts<span class=\"token punctuation\">.<\/span><span class=\"token function\">GetStandardFont<\/span><span class=\"token punctuation\">(<\/span><span class=\"token class-name\">StandardFontType<\/span><span class=\"token punctuation\">.<\/span>Helvetica<span class=\"token punctuation\">)<\/span><span class=\"token punctuation\">;<\/span>\n<span class=\"token keyword\">var<\/span> titleStyle <span class=\"token operator\">=<\/span> <span class=\"token class-name\">TextStyle<\/span><span class=\"token punctuation\">.<\/span><span class=\"token function\">WithFont<\/span><span class=\"token punctuation\">(<\/span>helvetica<span class=\"token punctuation\">,<\/span> 24<span class=\"token punctuation\">)<\/span>\n                          <span class=\"token punctuation\">.<\/span><span class=\"token function\">SetBrush<\/span><span class=\"token punctuation\">(<\/span><span class=\"token keyword\">new<\/span> <span class=\"token class-name\">SolidColorBrush<\/span><span class=\"token punctuation\">(<\/span><span class=\"token class-name\">Color<\/span><span class=\"token punctuation\">.<\/span>DarkBlue<span class=\"token punctuation\">)<\/span><span class=\"token punctuation\">)<\/span><span class=\"token punctuation\">;<\/span>\n<span class=\"token keyword\">var<\/span> bodyStyle <span class=\"token operator\">=<\/span> <span class=\"token class-name\">TextStyle<\/span><span class=\"token punctuation\">.<\/span><span class=\"token function\">WithFont<\/span><span class=\"token punctuation\">(<\/span>helvetica<span class=\"token punctuation\">,<\/span> 12<span class=\"token punctuation\">)<\/span><span class=\"token punctuation\">;<\/span>\n\n<span class=\"token comment\">\/\/ Title positioned explicitly, then body text below<\/span>\npage<span class=\"token punctuation\">.<\/span><span class=\"token function\">AddText<\/span><span class=\"token punctuation\">(<\/span><span class=\"token string\">\"Xceed PDF Library for .NET 2.0\"<\/span><span class=\"token punctuation\">,<\/span>\n             <span class=\"token keyword\">new<\/span> <span class=\"token class-name\">Rectangle<\/span><span class=\"token punctuation\">(<\/span>50<span class=\"token punctuation\">,<\/span> 50<span class=\"token punctuation\">,<\/span> 500<span class=\"token punctuation\">,<\/span> 40<span class=\"token punctuation\">)<\/span><span class=\"token punctuation\">,<\/span>\n             titleStyle<span class=\"token punctuation\">)<\/span><span class=\"token punctuation\">;<\/span>\n\npage<span class=\"token punctuation\">.<\/span><span class=\"token function\">AddText<\/span><span class=\"token punctuation\">(<\/span>\n    <span class=\"token string\">\"This document was generated entirely in C# using Xceed PdfLibrary \"<\/span> <span class=\"token operator\">+<\/span>\n    <span class=\"token string\">\"for .NET. No Adobe Acrobat, no Interop, no external processes \u2014 \"<\/span> <span class=\"token operator\">+<\/span>\n    <span class=\"token string\">\"just a NuGet package and a few lines of code.\"<\/span><span class=\"token punctuation\">,<\/span>\n    <span class=\"token keyword\">new<\/span> <span class=\"token class-name\">Rectangle<\/span><span class=\"token punctuation\">(<\/span>50<span class=\"token punctuation\">,<\/span> 110<span class=\"token punctuation\">,<\/span> 500<span class=\"token punctuation\">,<\/span> 80<span class=\"token punctuation\">)<\/span><span class=\"token punctuation\">,<\/span>\n    bodyStyle<span class=\"token punctuation\">)<\/span><span class=\"token punctuation\">;<\/span>\n\n<span class=\"token comment\">\/\/ Add a second page<\/span>\n<span class=\"token keyword\">var<\/span> page2 <span class=\"token operator\">=<\/span> doc<span class=\"token punctuation\">.<\/span>Pages<span class=\"token punctuation\">.<\/span><span class=\"token function\">Add<\/span><span class=\"token punctuation\">(<\/span><span class=\"token punctuation\">)<\/span><span class=\"token punctuation\">;<\/span>\npage2<span class=\"token punctuation\">.<\/span><span class=\"token function\">AddText<\/span><span class=\"token punctuation\">(<\/span><span class=\"token string\">\"Second Page\"<\/span><span class=\"token punctuation\">,<\/span>\n              <span class=\"token keyword\">new<\/span> <span class=\"token class-name\">Rectangle<\/span><span class=\"token punctuation\">(<\/span>50<span class=\"token punctuation\">,<\/span> 50<span class=\"token punctuation\">,<\/span> 500<span class=\"token punctuation\">,<\/span> 40<span class=\"token punctuation\">)<\/span><span class=\"token punctuation\">,<\/span>\n              titleStyle<span class=\"token punctuation\">)<\/span><span class=\"token punctuation\">;<\/span>\n\ndoc<span class=\"token punctuation\">.<\/span><span class=\"token function\">Save<\/span><span class=\"token punctuation\">(<\/span><span class=\"token punctuation\">)<\/span><span class=\"token punctuation\">;<\/span><\/code><\/pre>\n\n<p>PdfDocument.Create gives you a document with one blank page. AddText places content at exact coordinates using a Rectangle (x, y, width, height), so you control the layout precisely. The API uses immutable style objects \u2014 you build a TextStyle once and reuse it throughout your document. Consequently, your code stays readable even when generating complex multi-page reports.<\/p>\n\n<img decoding=\"async\" src=\"screenshots\/01-create-pdf.png\" alt=\"Creating a PDF from scratch with Xceed PDF library .NET \u2014 C# code output\" \/>\n\n<h2>2. Add interactive form fields<\/h2>\n\n<p>Need fillable PDFs? The library supports text boxes, checkboxes, combo boxes, list boxes, radio buttons, date fields, number fields, and signature fields. Here&#8217;s how you build a simple intake form:<\/p>\n\n<pre class=\"language-csharp\"><code><span class=\"token keyword\">using<\/span> <span class=\"token keyword\">var<\/span> doc <span class=\"token operator\">=<\/span> <span class=\"token class-name\">PdfDocument<\/span><span class=\"token punctuation\">.<\/span><span class=\"token function\">Create<\/span><span class=\"token punctuation\">(<\/span><span class=\"token string\">\"output\/form.pdf\"<\/span><span class=\"token punctuation\">)<\/span><span class=\"token punctuation\">;<\/span>\n\n<span class=\"token keyword\">var<\/span> page <span class=\"token operator\">=<\/span> doc<span class=\"token punctuation\">.<\/span>Pages<span class=\"token punctuation\">[<\/span><span class=\"token string\">0<\/span><span class=\"token punctuation\">]<\/span><span class=\"token punctuation\">;<\/span>\n<span class=\"token keyword\">var<\/span> helvetica <span class=\"token operator\">=<\/span> doc<span class=\"token punctuation\">.<\/span>Fonts<span class=\"token punctuation\">.<\/span><span class=\"token function\">GetStandardFont<\/span><span class=\"token punctuation\">(<\/span><span class=\"token class-name\">StandardFontType<\/span><span class=\"token punctuation\">.<\/span>Helvetica<span class=\"token punctuation\">)<\/span><span class=\"token punctuation\">;<\/span>\n<span class=\"token keyword\">var<\/span> labelStyle <span class=\"token operator\">=<\/span> <span class=\"token class-name\">TextStyle<\/span><span class=\"token punctuation\">.<\/span><span class=\"token function\">WithFont<\/span><span class=\"token punctuation\">(<\/span>helvetica<span class=\"token punctuation\">,<\/span> 11<span class=\"token punctuation\">)<\/span><span class=\"token punctuation\">;<\/span>\n\npage<span class=\"token punctuation\">.<\/span><span class=\"token function\">AddText<\/span><span class=\"token punctuation\">(<\/span><span class=\"token string\">\"Full Name:\"<\/span><span class=\"token punctuation\">,<\/span> <span class=\"token keyword\">new<\/span> <span class=\"token class-name\">Point<\/span><span class=\"token punctuation\">(<\/span>50<span class=\"token punctuation\">,<\/span> 50<span class=\"token punctuation\">)<\/span><span class=\"token punctuation\">,<\/span> labelStyle<span class=\"token punctuation\">)<\/span><span class=\"token punctuation\">;<\/span>\n<span class=\"token keyword\">var<\/span> nameField <span class=\"token operator\">=<\/span> <span class=\"token keyword\">new<\/span> <span class=\"token class-name\">TextBoxFormField<\/span><span class=\"token punctuation\">(<\/span><span class=\"token string\">\"\"<\/span><span class=\"token punctuation\">,<\/span>\n                                    <span class=\"token keyword\">new<\/span> <span class=\"token class-name\">Rectangle<\/span><span class=\"token punctuation\">(<\/span>150<span class=\"token punctuation\">,<\/span> 45<span class=\"token punctuation\">,<\/span> 250<span class=\"token punctuation\">,<\/span> 22<span class=\"token punctuation\">)<\/span><span class=\"token punctuation\">,<\/span>\n                                    labelStyle<span class=\"token punctuation\">)<\/span><span class=\"token punctuation\">;<\/span>\nnameField<span class=\"token punctuation\">.<\/span>Name <span class=\"token operator\">=<\/span> <span class=\"token string\">\"FullName\"<\/span><span class=\"token punctuation\">;<\/span>\npage<span class=\"token punctuation\">.<\/span>FormFields<span class=\"token punctuation\">.<\/span><span class=\"token function\">Add<\/span><span class=\"token punctuation\">(<\/span>nameField<span class=\"token punctuation\">)<\/span><span class=\"token punctuation\">;<\/span>\n\npage<span class=\"token punctuation\">.<\/span><span class=\"token function\">AddText<\/span><span class=\"token punctuation\">(<\/span><span class=\"token string\">\"Subscribe to newsletter:\"<\/span><span class=\"token punctuation\">,<\/span> <span class=\"token keyword\">new<\/span> <span class=\"token class-name\">Point<\/span><span class=\"token punctuation\">(<\/span>50<span class=\"token punctuation\">,<\/span> 90<span class=\"token punctuation\">)<\/span><span class=\"token punctuation\">,<\/span> labelStyle<span class=\"token punctuation\">)<\/span><span class=\"token punctuation\">;<\/span>\n<span class=\"token keyword\">var<\/span> checkBox <span class=\"token operator\">=<\/span> <span class=\"token keyword\">new<\/span> <span class=\"token class-name\">CheckBoxFormField<\/span><span class=\"token punctuation\">(<\/span><span class=\"token keyword\">false<\/span><span class=\"token punctuation\">,<\/span> <span class=\"token keyword\">new<\/span> <span class=\"token class-name\">Rectangle<\/span><span class=\"token punctuation\">(<\/span>230<span class=\"token punctuation\">,<\/span> 87<span class=\"token punctuation\">,<\/span> 16<span class=\"token punctuation\">,<\/span> 16<span class=\"token punctuation\">)<\/span><span class=\"token punctuation\">)<\/span><span class=\"token punctuation\">;<\/span>\ncheckBox<span class=\"token punctuation\">.<\/span>Name <span class=\"token operator\">=<\/span> <span class=\"token string\">\"Newsletter\"<\/span><span class=\"token punctuation\">;<\/span>\npage<span class=\"token punctuation\">.<\/span>FormFields<span class=\"token punctuation\">.<\/span><span class=\"token function\">Add<\/span><span class=\"token punctuation\">(<\/span>checkBox<span class=\"token punctuation\">)<\/span><span class=\"token punctuation\">;<\/span>\n\npage<span class=\"token punctuation\">.<\/span><span class=\"token function\">AddText<\/span><span class=\"token punctuation\">(<\/span><span class=\"token string\">\"Country:\"<\/span><span class=\"token punctuation\">,<\/span> <span class=\"token keyword\">new<\/span> <span class=\"token class-name\">Point<\/span><span class=\"token punctuation\">(<\/span>50<span class=\"token punctuation\">,<\/span> 130<span class=\"token punctuation\">)<\/span><span class=\"token punctuation\">,<\/span> labelStyle<span class=\"token punctuation\">)<\/span><span class=\"token punctuation\">;<\/span>\n<span class=\"token keyword\">var<\/span> countries <span class=\"token operator\">=<\/span> <span class=\"token keyword\">new<\/span> <span class=\"token class-name\">List<\/span><span class=\"token operator\">&lt;<\/span><span class=\"token class-name\">ListItem<\/span><span class=\"token operator\">&gt;<\/span>\n<span class=\"token punctuation\">{<\/span>\n    <span class=\"token keyword\">new<\/span> <span class=\"token class-name\">ListItem<\/span><span class=\"token punctuation\">(<\/span><span class=\"token string\">\"United States\"<\/span><span class=\"token punctuation\">,<\/span> <span class=\"token string\">\"US\"<\/span><span class=\"token punctuation\">)<\/span><span class=\"token punctuation\">,<\/span>\n    <span class=\"token keyword\">new<\/span> <span class=\"token class-name\">ListItem<\/span><span class=\"token punctuation\">(<\/span><span class=\"token string\">\"Canada\"<\/span><span class=\"token punctuation\">,<\/span> <span class=\"token string\">\"CA\"<\/span><span class=\"token punctuation\">)<\/span><span class=\"token punctuation\">,<\/span>\n    <span class=\"token keyword\">new<\/span> <span class=\"token class-name\">ListItem<\/span><span class=\"token punctuation\">(<\/span><span class=\"token string\">\"United Kingdom\"<\/span><span class=\"token punctuation\">,<\/span> <span class=\"token string\">\"UK\"<\/span><span class=\"token punctuation\">)<\/span><span class=\"token punctuation\">,<\/span>\n    <span class=\"token keyword\">new<\/span> <span class=\"token class-name\">ListItem<\/span><span class=\"token punctuation\">(<\/span><span class=\"token string\">\"France\"<\/span><span class=\"token punctuation\">,<\/span> <span class=\"token string\">\"FR\"<\/span><span class=\"token punctuation\">)<\/span><span class=\"token punctuation\">,<\/span>\n    <span class=\"token keyword\">new<\/span> <span class=\"token class-name\">ListItem<\/span><span class=\"token punctuation\">(<\/span><span class=\"token string\">\"Germany\"<\/span><span class=\"token punctuation\">,<\/span> <span class=\"token string\">\"DE\"<\/span><span class=\"token punctuation\">)<\/span>\n<span class=\"token punctuation\">}<\/span><span class=\"token punctuation\">;<\/span>\n<span class=\"token keyword\">var<\/span> combo <span class=\"token operator\">=<\/span> <span class=\"token keyword\">new<\/span> <span class=\"token class-name\">ComboBoxFormField<\/span><span class=\"token punctuation\">(<\/span>countries<span class=\"token punctuation\">,<\/span> <span class=\"token keyword\">new<\/span> <span class=\"token class-name\">Rectangle<\/span><span class=\"token punctuation\">(<\/span>150<span class=\"token punctuation\">,<\/span> 125<span class=\"token punctuation\">,<\/span> 180<span class=\"token punctuation\">,<\/span> 22<span class=\"token punctuation\">)<\/span><span class=\"token punctuation\">)<\/span><span class=\"token punctuation\">;<\/span>\ncombo<span class=\"token punctuation\">.<\/span>Name <span class=\"token operator\">=<\/span> <span class=\"token string\">\"Country\"<\/span><span class=\"token punctuation\">;<\/span>\npage<span class=\"token punctuation\">.<\/span>FormFields<span class=\"token punctuation\">.<\/span><span class=\"token function\">Add<\/span><span class=\"token punctuation\">(<\/span>combo<span class=\"token punctuation\">)<\/span><span class=\"token punctuation\">;<\/span>\n\ndoc<span class=\"token punctuation\">.<\/span><span class=\"token function\">Save<\/span><span class=\"token punctuation\">(<\/span><span class=\"token punctuation\">)<\/span><span class=\"token punctuation\">;<\/span><\/code><\/pre>\n\n<p>Each form field takes a Rectangle for positioning and a TextStyle for appearance. As a result, you control the exact layout. If you later load this PDF, you can read the field values back \u2014 which makes it useful for round-trip workflows where users fill out forms and your backend processes the responses.<\/p>\n\n<h2>3. Build hierarchical bookmarks and watermarks<\/h2>\n\n<p>Version 2.0 overhauled the bookmark system with a dedicated BookmarkCollection class. You can now create parent-child bookmark hierarchies, style them with bold and italic text, and even set title colors. Meanwhile, watermarks apply across the entire document with a single call:<\/p>\n\n<pre class=\"language-csharp\"><code><span class=\"token keyword\">using<\/span> <span class=\"token keyword\">var<\/span> doc <span class=\"token operator\">=<\/span> <span class=\"token class-name\">PdfDocument<\/span><span class=\"token punctuation\">.<\/span><span class=\"token function\">Create<\/span><span class=\"token punctuation\">(<\/span><span class=\"token string\">\"output\/bookmarks.pdf\"<\/span><span class=\"token punctuation\">)<\/span><span class=\"token punctuation\">;<\/span>\n\n<span class=\"token keyword\">var<\/span> helvetica <span class=\"token operator\">=<\/span> doc<span class=\"token punctuation\">.<\/span>Fonts<span class=\"token punctuation\">.<\/span><span class=\"token function\">GetStandardFont<\/span><span class=\"token punctuation\">(<\/span><span class=\"token class-name\">StandardFontType<\/span><span class=\"token punctuation\">.<\/span>Helvetica<span class=\"token punctuation\">)<\/span><span class=\"token punctuation\">;<\/span>\n<span class=\"token keyword\">var<\/span> titleStyle <span class=\"token operator\">=<\/span> <span class=\"token class-name\">TextStyle<\/span><span class=\"token punctuation\">.<\/span><span class=\"token function\">WithFont<\/span><span class=\"token punctuation\">(<\/span>helvetica<span class=\"token punctuation\">,<\/span> 20<span class=\"token punctuation\">)<\/span><span class=\"token punctuation\">;<\/span>\n\n<span class=\"token keyword\">var<\/span> page1 <span class=\"token operator\">=<\/span> doc<span class=\"token punctuation\">.<\/span>Pages<span class=\"token punctuation\">[<\/span><span class=\"token string\">0<\/span><span class=\"token punctuation\">]<\/span><span class=\"token punctuation\">;<\/span>\npage1<span class=\"token punctuation\">.<\/span><span class=\"token function\">AddParagraph<\/span><span class=\"token punctuation\">(<\/span><span class=\"token string\">\"Chapter 1: Introduction\"<\/span><span class=\"token punctuation\">,<\/span>\n                   titleStyle<span class=\"token punctuation\">,<\/span>\n                   <span class=\"token keyword\">new<\/span> <span class=\"token class-name\">ParagraphStyle<\/span><span class=\"token punctuation\">(<\/span><span class=\"token class-name\">ParagraphHorizontalAlignment<\/span><span class=\"token punctuation\">.<\/span>Left<span class=\"token punctuation\">)<\/span><span class=\"token punctuation\">)<\/span><span class=\"token punctuation\">;<\/span>\n\n<span class=\"token keyword\">var<\/span> page2 <span class=\"token operator\">=<\/span> doc<span class=\"token punctuation\">.<\/span>Pages<span class=\"token punctuation\">.<\/span><span class=\"token function\">Add<\/span><span class=\"token punctuation\">(<\/span><span class=\"token punctuation\">)<\/span><span class=\"token punctuation\">;<\/span>\npage2<span class=\"token punctuation\">.<\/span><span class=\"token function\">AddParagraph<\/span><span class=\"token punctuation\">(<\/span><span class=\"token string\">\"Chapter 2: Getting Started\"<\/span><span class=\"token punctuation\">,<\/span>\n                   titleStyle<span class=\"token punctuation\">,<\/span>\n                   <span class=\"token keyword\">new<\/span> <span class=\"token class-name\">ParagraphStyle<\/span><span class=\"token punctuation\">(<\/span><span class=\"token class-name\">ParagraphHorizontalAlignment<\/span><span class=\"token punctuation\">.<\/span>Left<span class=\"token punctuation\">)<\/span><span class=\"token punctuation\">)<\/span><span class=\"token punctuation\">;<\/span>\n\n<span class=\"token keyword\">var<\/span> page3 <span class=\"token operator\">=<\/span> doc<span class=\"token punctuation\">.<\/span>Pages<span class=\"token punctuation\">.<\/span><span class=\"token function\">Add<\/span><span class=\"token punctuation\">(<\/span><span class=\"token punctuation\">)<\/span><span class=\"token punctuation\">;<\/span>\npage3<span class=\"token punctuation\">.<\/span><span class=\"token function\">AddParagraph<\/span><span class=\"token punctuation\">(<\/span><span class=\"token string\">\"Chapter 3: Advanced Topics\"<\/span><span class=\"token punctuation\">,<\/span>\n                   titleStyle<span class=\"token punctuation\">,<\/span>\n                   <span class=\"token keyword\">new<\/span> <span class=\"token class-name\">ParagraphStyle<\/span><span class=\"token punctuation\">(<\/span><span class=\"token class-name\">ParagraphHorizontalAlignment<\/span><span class=\"token punctuation\">.<\/span>Left<span class=\"token punctuation\">)<\/span><span class=\"token punctuation\">)<\/span><span class=\"token punctuation\">;<\/span>\n\n<span class=\"token comment\">\/\/ Hierarchical bookmarks (TargetPage is a zero-based page index)<\/span>\n<span class=\"token keyword\">var<\/span> bk1 <span class=\"token operator\">=<\/span> <span class=\"token keyword\">new<\/span> <span class=\"token class-name\">Bookmark<\/span><span class=\"token punctuation\">(<\/span><span class=\"token string\">\"Introduction\"<\/span><span class=\"token punctuation\">)<\/span> <span class=\"token punctuation\">{<\/span> TargetPage <span class=\"token operator\">=<\/span> 0<span class=\"token punctuation\">,<\/span> IsBold <span class=\"token operator\">=<\/span> <span class=\"token keyword\">true<\/span> <span class=\"token punctuation\">}<\/span><span class=\"token punctuation\">;<\/span>\n<span class=\"token keyword\">var<\/span> bk2 <span class=\"token operator\">=<\/span> <span class=\"token keyword\">new<\/span> <span class=\"token class-name\">Bookmark<\/span><span class=\"token punctuation\">(<\/span><span class=\"token string\">\"Getting Started\"<\/span><span class=\"token punctuation\">)<\/span> <span class=\"token punctuation\">{<\/span> TargetPage <span class=\"token operator\">=<\/span> 1<span class=\"token punctuation\">,<\/span> IsBold <span class=\"token operator\">=<\/span> <span class=\"token keyword\">true<\/span> <span class=\"token punctuation\">}<\/span><span class=\"token punctuation\">;<\/span>\n<span class=\"token keyword\">var<\/span> bk3 <span class=\"token operator\">=<\/span> <span class=\"token keyword\">new<\/span> <span class=\"token class-name\">Bookmark<\/span><span class=\"token punctuation\">(<\/span><span class=\"token string\">\"Advanced Topics\"<\/span><span class=\"token punctuation\">)<\/span> <span class=\"token punctuation\">{<\/span> TargetPage <span class=\"token operator\">=<\/span> 2<span class=\"token punctuation\">,<\/span> IsBold <span class=\"token operator\">=<\/span> <span class=\"token keyword\">true<\/span> <span class=\"token punctuation\">}<\/span><span class=\"token punctuation\">;<\/span>\n\n<span class=\"token comment\">\/\/ Nest a child bookmark<\/span>\n<span class=\"token keyword\">var<\/span> bk3Child <span class=\"token operator\">=<\/span> <span class=\"token keyword\">new<\/span> <span class=\"token class-name\">Bookmark<\/span><span class=\"token punctuation\">(<\/span><span class=\"token string\">\"Digital Signatures\"<\/span><span class=\"token punctuation\">)<\/span> <span class=\"token punctuation\">{<\/span> TargetPage <span class=\"token operator\">=<\/span> 2 <span class=\"token punctuation\">}<\/span><span class=\"token punctuation\">;<\/span>\nbk3<span class=\"token punctuation\">.<\/span>Children<span class=\"token punctuation\">.<\/span><span class=\"token function\">Add<\/span><span class=\"token punctuation\">(<\/span>bk3Child<span class=\"token punctuation\">)<\/span><span class=\"token punctuation\">;<\/span>\n\ndoc<span class=\"token punctuation\">.<\/span>Bookmarks<span class=\"token punctuation\">.<\/span><span class=\"token function\">Add<\/span><span class=\"token punctuation\">(<\/span>bk1<span class=\"token punctuation\">)<\/span><span class=\"token punctuation\">;<\/span>\ndoc<span class=\"token punctuation\">.<\/span>Bookmarks<span class=\"token punctuation\">.<\/span><span class=\"token function\">Add<\/span><span class=\"token punctuation\">(<\/span>bk2<span class=\"token punctuation\">)<\/span><span class=\"token punctuation\">;<\/span>\ndoc<span class=\"token punctuation\">.<\/span>Bookmarks<span class=\"token punctuation\">.<\/span><span class=\"token function\">Add<\/span><span class=\"token punctuation\">(<\/span>bk3<span class=\"token punctuation\">)<\/span><span class=\"token punctuation\">;<\/span>\n\n<span class=\"token comment\">\/\/ Watermark applied to all pages<\/span>\n<span class=\"token keyword\">var<\/span> watermarkStyle <span class=\"token operator\">=<\/span> <span class=\"token class-name\">TextStyle<\/span><span class=\"token punctuation\">.<\/span><span class=\"token function\">WithFont<\/span><span class=\"token punctuation\">(<\/span>helvetica<span class=\"token punctuation\">,<\/span> 48<span class=\"token punctuation\">)<\/span>\n                              <span class=\"token punctuation\">.<\/span><span class=\"token function\">SetBrush<\/span><span class=\"token punctuation\">(<\/span><span class=\"token keyword\">new<\/span> <span class=\"token class-name\">SolidColorBrush<\/span><span class=\"token punctuation\">(<\/span><span class=\"token keyword\">new<\/span> <span class=\"token class-name\">Color<\/span><span class=\"token punctuation\">(<\/span>200<span class=\"token punctuation\">,<\/span> 200<span class=\"token punctuation\">,<\/span> 200<span class=\"token punctuation\">)<\/span><span class=\"token punctuation\">)<\/span><span class=\"token punctuation\">)<\/span>\n                              <span class=\"token punctuation\">.<\/span><span class=\"token function\">SetRotationAngle<\/span><span class=\"token punctuation\">(<\/span>45<span class=\"token punctuation\">)<\/span><span class=\"token punctuation\">;<\/span>\ndoc<span class=\"token punctuation\">.<\/span>Watermarks<span class=\"token punctuation\">.<\/span><span class=\"token function\">Add<\/span><span class=\"token punctuation\">(<\/span><span class=\"token keyword\">new<\/span> <span class=\"token class-name\">Watermark<\/span><span class=\"token punctuation\">(<\/span><span class=\"token string\">\"DRAFT\"<\/span><span class=\"token punctuation\">,<\/span> watermarkStyle<span class=\"token punctuation\">)<\/span><span class=\"token punctuation\">)<\/span><span class=\"token punctuation\">;<\/span>\n\ndoc<span class=\"token punctuation\">.<\/span><span class=\"token function\">Save<\/span><span class=\"token punctuation\">(<\/span><span class=\"token punctuation\">)<\/span><span class=\"token punctuation\">;<\/span><\/code><\/pre>\n\n<p>Bookmarks and watermarks matter for any document that&#8217;s longer than a couple of pages. Specifically, bookmarks give readers a navigation panel in their PDF viewer, while watermarks communicate document status without editing the actual content.<\/p>\n\n<h2>4. Extract text and metadata from existing PDFs<\/h2>\n\n<p>Loading and reading PDFs is just as straightforward. You can pull text from each page, read form field values, access bookmark trees, and retrieve document metadata:<\/p>\n\n<pre class=\"language-csharp\"><code><span class=\"token keyword\">using<\/span> <span class=\"token keyword\">var<\/span> doc <span class=\"token operator\">=<\/span> <span class=\"token class-name\">PdfDocument<\/span><span class=\"token punctuation\">.<\/span><span class=\"token function\">Load<\/span><span class=\"token punctuation\">(<\/span><span class=\"token string\">\"output\/hello.pdf\"<\/span><span class=\"token punctuation\">)<\/span><span class=\"token punctuation\">;<\/span>\n\n<span class=\"token keyword\">for<\/span> <span class=\"token punctuation\">(<\/span><span class=\"token keyword\">int<\/span> i <span class=\"token operator\">=<\/span> 0<span class=\"token punctuation\">;<\/span> i <span class=\"token operator\">&lt;<\/span> doc<span class=\"token punctuation\">.<\/span>Pages<span class=\"token punctuation\">.<\/span>Count<span class=\"token punctuation\">;<\/span> i<span class=\"token operator\">++<\/span><span class=\"token punctuation\">)<\/span>\n<span class=\"token punctuation\">{<\/span>\n    <span class=\"token keyword\">string<\/span><span class=\"token operator\">?<\/span> text <span class=\"token operator\">=<\/span> doc<span class=\"token punctuation\">.<\/span>Pages<span class=\"token punctuation\">[<\/span>i<span class=\"token punctuation\">]<\/span><span class=\"token punctuation\">.<\/span>Text<span class=\"token punctuation\">;<\/span>\n    <span class=\"token class-name\">Console<\/span><span class=\"token punctuation\">.<\/span><span class=\"token function\">WriteLine<\/span><span class=\"token punctuation\">(<\/span><span class=\"token string\">$\"--- Page {i + 1} ---\"<\/span><span class=\"token punctuation\">)<\/span><span class=\"token punctuation\">;<\/span>\n    <span class=\"token class-name\">Console<\/span><span class=\"token punctuation\">.<\/span><span class=\"token function\">WriteLine<\/span><span class=\"token punctuation\">(<\/span>text<span class=\"token operator\">?<\/span><span class=\"token punctuation\">.<\/span><span class=\"token function\">Trim<\/span><span class=\"token punctuation\">(<\/span><span class=\"token punctuation\">)<\/span> <span class=\"token operator\">??<\/span> <span class=\"token string\">\"(empty)\"<\/span><span class=\"token punctuation\">)<\/span><span class=\"token punctuation\">;<\/span>\n<span class=\"token punctuation\">}<\/span>\n\n<span class=\"token class-name\">Console<\/span><span class=\"token punctuation\">.<\/span><span class=\"token function\">WriteLine<\/span><span class=\"token punctuation\">(<\/span><span class=\"token string\">$\"Total pages: {doc.Pages.Count}\"<\/span><span class=\"token punctuation\">)<\/span><span class=\"token punctuation\">;<\/span><\/code><\/pre>\n\n<p>For more targeted extraction, use GetTextFromArea with a Rectangle to pull text from a specific region of the page. Additionally, the Words collection gives you individual word objects with their bounding boxes \u2014 useful for building search indexes or analyzing document layouts.<\/p>\n\n<h2>5. Split and merge documents<\/h2>\n\n<p>Version 2.0 added flexible splitting options. You can extract a single page, a range, or split every page into its own file:<\/p>\n\n<pre class=\"language-csharp\"><code><span class=\"token keyword\">using<\/span> <span class=\"token keyword\">var<\/span> doc <span class=\"token operator\">=<\/span> <span class=\"token class-name\">PdfDocument<\/span><span class=\"token punctuation\">.<\/span><span class=\"token function\">Load<\/span><span class=\"token punctuation\">(<\/span><span class=\"token string\">\"output\/bookmarks.pdf\"<\/span><span class=\"token punctuation\">)<\/span><span class=\"token punctuation\">;<\/span>\n\n<span class=\"token comment\">\/\/ Extract page 2 (index 1) to its own file<\/span>\ndoc<span class=\"token punctuation\">.<\/span><span class=\"token function\">Split<\/span><span class=\"token punctuation\">(<\/span><span class=\"token class-name\">SplitByPageOptions<\/span><span class=\"token punctuation\">.<\/span><span class=\"token function\">ToPath<\/span><span class=\"token punctuation\">(<\/span>1<span class=\"token punctuation\">,<\/span> <span class=\"token string\">\"output\/chapter2-only.pdf\"<\/span><span class=\"token punctuation\">)<\/span><span class=\"token punctuation\">)<\/span><span class=\"token punctuation\">;<\/span><\/code><\/pre>\n\n<p>Merging works in the other direction \u2014 combine multiple PdfDocument instances into one using MergeOptions. You can also split by bookmarks with SplitByBookmarkOptions, so a document that&#8217;s organized into chapters can automatically break apart at each chapter boundary. Therefore, batch processing workflows become simpler to build.<\/p>\n\n<h2>6. Digital signatures and certification<\/h2>\n\n<p>This is the headline feature of version 2.0. You can now sign PDF documents with PFX certificates, validate existing signatures, and certify documents to prevent further modifications. The library supports SHA-256, SHA-384, and SHA-512 digest algorithms.<\/p>\n\n<p>Signing locks the document at that point \u2014 any subsequent modifications invalidate the signature, exactly as the PDF specification requires. For compliance-driven workflows (contracts, legal filings, medical records), this feature alone justifies upgrading from 1.0.<\/p>\n\n<h2>7. Images, hyperlinks, and drawing<\/h2>\n\n<p>Beyond text and forms, you can insert images from file paths or streams, add clickable hyperlinks to specific regions, and draw shapes on a page&#8217;s Graphics canvas. The Canvas object supports lines, rectangles, and image placement with precise coordinate control. Because the coordinate system uses points (1\/72 inch), you get print-accurate positioning.<\/p>\n\n<h2>How it compares to other C# PDF libraries<\/h2>\n\n<p>The .NET PDF landscape has a lot of options. Here&#8217;s an honest comparison:<\/p>\n\n<table>\n<thead>\n<tr>\n<th>Feature<\/th>\n<th>Xceed PDF Library<\/th>\n<th>iText 7<\/th>\n<th>QuestPDF<\/th>\n<th>PDFsharp<\/th>\n<th>IronPDF<\/th>\n<\/tr>\n<\/thead>\n<tbody>\n<tr>\n<td>Create PDFs from code<\/td>\n<td>Yes<\/td>\n<td>Yes<\/td>\n<td>Yes<\/td>\n<td>Yes<\/td>\n<td>Yes (via HTML)<\/td>\n<\/tr>\n<tr>\n<td>Load and edit existing PDFs<\/td>\n<td>Yes<\/td>\n<td>Yes<\/td>\n<td>No<\/td>\n<td>Limited<\/td>\n<td>Yes<\/td>\n<\/tr>\n<tr>\n<td>Form fields (read\/write)<\/td>\n<td>Yes<\/td>\n<td>Yes<\/td>\n<td>No<\/td>\n<td>No<\/td>\n<td>Limited<\/td>\n<\/tr>\n<tr>\n<td>Digital signatures<\/td>\n<td>Yes (v2.0)<\/td>\n<td>Yes<\/td>\n<td>No<\/td>\n<td>No<\/td>\n<td>Yes<\/td>\n<\/tr>\n<tr>\n<td>Text extraction<\/td>\n<td>Yes<\/td>\n<td>Yes<\/td>\n<td>No<\/td>\n<td>No<\/td>\n<td>Yes<\/td>\n<\/tr>\n<tr>\n<td>Split and merge<\/td>\n<td>Yes<\/td>\n<td>Yes<\/td>\n<td>No<\/td>\n<td>Yes<\/td>\n<td>Yes<\/td>\n<\/tr>\n<tr>\n<td>Cross-platform<\/td>\n<td>Yes<\/td>\n<td>Yes<\/td>\n<td>Yes<\/td>\n<td>Partial<\/td>\n<td>Yes<\/td>\n<\/tr>\n<tr>\n<td>License<\/td>\n<td>Commercial ($850)<\/td>\n<td>AGPL or $15K+\/yr<\/td>\n<td>MIT (&lt;$1M)<\/td>\n<td>MIT<\/td>\n<td>$749+<\/td>\n<\/tr>\n<tr>\n<td>NuGet package size<\/td>\n<td>~940 KB<\/td>\n<td>~30 MB+<\/td>\n<td>~2 MB<\/td>\n<td>~4 MB<\/td>\n<td>~50 MB+<\/td>\n<\/tr>\n<\/tbody>\n<\/table>\n\n<p><strong>iText 7<\/strong> is the most feature-rich option, but its AGPL license means you must open-source your application \u2014 or pay $15,000+ per year for a commercial license. For many teams, that&#8217;s a non-starter.<\/p>\n\n<p><strong>QuestPDF<\/strong> excels at creating beautiful documents with its fluent API, and it&#8217;s free under $1M revenue. However, it can only generate new PDFs. It can&#8217;t load existing documents, read form fields, extract text, or add signatures.<\/p>\n\n<p><strong>PDFsharp<\/strong> is free and open-source, but it lacks form field support, digital signatures, and reliable cross-platform behavior. Similarly, its text extraction capabilities are minimal.<\/p>\n\n<p><strong>IronPDF<\/strong> takes an HTML-to-PDF approach with a Chromium engine, which produces pixel-perfect output but ships a ~50 MB package. In contrast, Xceed&#8217;s package is under 1 MB because it works with the PDF specification directly instead of bundling a browser engine.<\/p>\n\n<p>Xceed&#8217;s <strong>PDF library .NET<\/strong> sits in the practical middle ground: it handles the full create-edit-sign-extract lifecycle at a one-time cost of $849.95. No recurring subscription, no AGPL complications. For businesses under $1M revenue, a small business license brings that down to $659.95.<\/p>\n\n<h2>When NOT to use Xceed PDF Library<\/h2>\n\n<p>Honesty matters. Here are cases where a different tool might serve you better:<\/p>\n\n<ul>\n<li><strong>HTML-to-PDF rendering<\/strong>: If your PDFs are basically styled web pages, an HTML-based engine like IronPDF or Puppeteer will be faster to develop against. Xceed works at the PDF-primitive level (text, rectangles, coordinates), not the CSS level.<\/li>\n<li><strong>High-fidelity document design<\/strong>: QuestPDF&#8217;s fluent layout API is better suited for pixel-perfect invoice or report templates where you want a declarative, component-based design.<\/li>\n<li><strong>Free and open-source requirement<\/strong>: If your project mandates an MIT\/Apache license, PDFsharp or QuestPDF are your best options. Xceed is a commercial product.<\/li>\n<\/ul>\n\n<p>Pick the tool that matches your actual requirements \u2014 not the one with the most features on paper.<\/p>\n\n<h2>Running the demo project on .NET 10<\/h2>\n\n<p>Every code snippet in this article comes from a working demo project. You can find it in the <a href=\"https:\/\/github.com\/xceedsoftware\">XceedPdfDemo folder<\/a> alongside this article. The project targets .NET 10 and compiles with zero errors.<\/p>\n\n<p>To run it yourself:<\/p>\n\n<ul>\n<li>Clone the project and open it in Visual Studio 2022 or Rider<\/li>\n<li>Insert your license key in Program.cs (get a <a href=\"https:\/\/xceed.com\/products\/net\/pdf-library-for-net\/\">free 45-day trial<\/a>)<\/li>\n<li>Run with <strong>dotnet run<\/strong><\/li>\n<li>Check the output\/ folder for the generated PDFs<\/li>\n<\/ul>\n\n<p>The demo covers all seven scenarios: creating documents, form fields, bookmarks with watermarks, text extraction, and document splitting.<\/p>\n\n<div class=\"cta-box\">\n<h3>Try Xceed PDF Library for .NET<\/h3>\n<p>Build, edit, sign, and extract PDFs from pure C# \u2014 on Windows, macOS, or Linux. One NuGet package, zero external dependencies.<\/p>\n<p><a class=\"cta-link\" href=\"https:\/\/xceed.com\/products\/net\/pdf-library-for-net\/\">Download Free Trial<\/a> <a class=\"cta-link\" href=\"https:\/\/www.nuget.org\/packages\/Xceed.PdfLibrary.NET\">View on NuGet<\/a><\/p>\n<\/div>\n\n<h2>What&#8217;s new in version 2.0<\/h2>\n\n<p>The March 2026 release brought <a href=\"https:\/\/xceed.com\/blog\/all\/march-15th-2026-release\/\">significant changes<\/a> 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 \u2014 you use setter methods like SetHeight and SetWidth instead of direct assignment.<\/p>\n\n<p>Key additions in 2.0:<\/p>\n\n<ul>\n<li><strong>Digital signatures and certification<\/strong> \u2014 sign with PFX, validate existing signatures, certify documents<\/li>\n<li><strong>Image insertion<\/strong> \u2014 add images from streams or file paths via the Canvas API<\/li>\n<li><strong>Hierarchical bookmarks<\/strong> \u2014 parent-child relationships with styling (bold, italic, color)<\/li>\n<li><strong>Page manipulation<\/strong> \u2014 insert at specific indices, reorder with Move, remove pages<\/li>\n<li><strong>Document splitting<\/strong> \u2014 split by page ranges or by bookmark structure<\/li>\n<li><strong>RTL text support<\/strong> \u2014 right-to-left text direction for Arabic and Hebrew<\/li>\n<li><strong>Font embedding modes<\/strong> \u2014 Simple for western languages (smaller files), Full for CJK support<\/li>\n<\/ul>\n\n<p>These are breaking changes from 1.0. If you&#8217;re upgrading, review the <a href=\"https:\/\/xceed.com\/blog\/all\/march-15th-2026-release\/\">release notes<\/a> carefully \u2014 property names like StrokeColor (now Color) and StrokeWidth (now Thickness) on Pen objects have changed.<\/p>\n\n<h2>Frequently asked questions<\/h2>\n\n<h3>Does the Xceed PDF library .NET package work on Linux and macOS?<\/h3>\n\n<p>Yes. The <strong>PDF library .NET<\/strong> package targets .NET 5+ with no Windows-specific dependencies. It runs on any platform that .NET supports \u2014 Windows, macOS, and Linux. You can use it in ASP.NET Core web applications, Azure Functions, Docker containers, and any other .NET host.<\/p>\n\n<h3>Can I create PDF files in C# without Adobe Acrobat installed?<\/h3>\n\n<p>Absolutely. You can <strong>create PDF C#<\/strong> files by writing the PDF specification directly \u2014 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&#8217;t an option.<\/p>\n\n<h3>How does this C# PDF library handle digital signatures?<\/h3>\n\n<p>Version 2.0 added full digital signature support. You can sign documents using PFX certificates with SHA-256, SHA-384, or SHA-512 algorithms. The library also validates existing signatures and supports document certification, which prevents further modifications after signing. For compliance workflows, you can control which form fields remain editable after a signature.<\/p>\n\n<h3>What&#8217;s the difference between Xceed PDF Library and Xceed Words for .NET?<\/h3>\n\n<p>Words for .NET creates and edits Microsoft Word (.docx) documents. <strong>PDF Library for .NET<\/strong> creates and edits PDF documents. They serve different formats, but you can bundle both for $100 during the <a href=\"https:\/\/xceed.com\/pricing\/\">current promotional offer<\/a>. If your workflow involves generating Word documents and then converting to PDF, you might want both.<\/p>\n\n<h3>Is there a free trial for the Xceed C# PDF library?<\/h3>\n\n<p>Yes. Xceed offers a <a href=\"https:\/\/xceed.com\/products\/net\/pdf-library-for-net\/\">free 45-day trial<\/a> with full functionality. The library compiles without a license key, but you need one to <strong>create PDF C#<\/strong> 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.<\/p>\n\n<h3>Can I extract text and form field data from existing PDFs?<\/h3>\n\n<p>Yes. Load any PDF with PdfDocument.Load, then access each page&#8217;s Text property for full-text content or GetTextFromArea for region-based extraction. Form field values are available through the FormFields collection \u2014 you can read TextBoxFormField.Text, CheckBoxFormField.IsChecked, and other typed properties. Additionally, the Words collection provides individual word objects with positional data.<\/p>\n\n<\/article>\n\n<script type=\"application\/ld+json\">\n{\n  \"@context\": \"https:\/\/schema.org\",\n  \"@type\": \"FAQPage\",\n  \"mainEntity\": [\n    {\n      \"@type\": \"Question\",\n      \"name\": \"Does the Xceed PDF library .NET package work on Linux and macOS?\",\n      \"acceptedAnswer\": {\n        \"@type\": \"Answer\",\n        \"text\": \"Yes. The PDF library .NET package targets .NET 5+ with no Windows-specific dependencies. It runs on any platform that .NET supports \u2014 Windows, macOS, and Linux. You can use it in ASP.NET Core web applications, Azure Functions, Docker containers, and any other .NET host.\"\n      }\n    },\n    {\n      \"@type\": \"Question\",\n      \"name\": \"Can I create PDF files in C# without Adobe Acrobat installed?\",\n      \"acceptedAnswer\": {\n        \"@type\": \"Answer\",\n        \"text\": \"Absolutely. You can create PDF C# files by writing the PDF specification directly \u2014 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.\"\n      }\n    },\n    {\n      \"@type\": \"Question\",\n      \"name\": \"How does this C# PDF library handle digital signatures?\",\n      \"acceptedAnswer\": {\n        \"@type\": \"Answer\",\n        \"text\": \"Version 2.0 added full digital signature support. You can sign documents using PFX certificates with SHA-256, SHA-384, or SHA-512 algorithms. The library also validates existing signatures and supports document certification, which prevents further modifications after signing. For compliance workflows, you can control which form fields remain editable after a signature.\"\n      }\n    },\n    {\n      \"@type\": \"Question\",\n      \"name\": \"What's the difference between Xceed PDF Library and Xceed Words for .NET?\",\n      \"acceptedAnswer\": {\n        \"@type\": \"Answer\",\n        \"text\": \"Words for .NET creates and edits Microsoft Word (.docx) documents. PDF Library for .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.\"\n      }\n    },\n    {\n      \"@type\": \"Question\",\n      \"name\": \"Is there a free trial for the Xceed C# PDF library?\",\n      \"acceptedAnswer\": {\n        \"@type\": \"Answer\",\n        \"text\": \"Yes. Xceed offers a free 45-day trial with full functionality. The library compiles without a license key, but you need one to create 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.\"\n      }\n    },\n    {\n      \"@type\": \"Question\",\n      \"name\": \"Can I extract text and form field data from existing PDFs?\",\n      \"acceptedAnswer\": {\n        \"@type\": \"Answer\",\n        \"text\": \"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 \u2014 you can read TextBoxFormField.Text, CheckBoxFormField.IsChecked, and other typed properties. Additionally, the Words collection provides individual word objects with positional data.\"\n      }\n    }\n  ]\n}\n<\/script>\n\n<script src=\"https:\/\/cdnjs.cloudflare.com\/ajax\/libs\/prism\/1.29.0\/prism.min.js\"><\/script>\n<script src=\"https:\/\/cdnjs.cloudflare.com\/ajax\/libs\/prism\/1.29.0\/components\/prism-csharp.min.js\"><\/script>\n<script src=\"https:\/\/cdnjs.cloudflare.com\/ajax\/libs\/prism\/1.29.0\/components\/prism-xml-doc.min.js\"><\/script>\n<script src=\"https:\/\/cdnjs.cloudflare.com\/ajax\/libs\/prism\/1.29.0\/components\/prism-bash.min.js\"><\/script>\n\t\t\t\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t","protected":false},"excerpt":{"rendered":"<p>Xceed PDF Library for .NET 2.0 ships with digital signing, bookmarks, form fields, and cross-platform support. This guide covers what it does, how it compares, and includes a working demo project on .NET 10.<\/p>","protected":false},"author":17,"featured_media":3569,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"_acf_changed":false,"footnotes":""},"categories":[141,52,60],"tags":[767,360,769,510],"class_list":["post-3567","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-all","category-news","category-tutorials","tag-net-pdf","tag-csharp","tag-pdf-c","tag-pdf-library"],"acf":[],"yoast_head":"<!-- This site is optimized with the Yoast SEO plugin v27.4 - https:\/\/yoast.com\/product\/yoast-seo-wordpress\/ -->\n<title>7 Things You Can Do with a PDF Library .NET Developers Actually Want to Use - Xceed<\/title>\n<meta name=\"description\" content=\"Xceed PDF Library for .NET 2.0 lets you create, edit, sign, and extract PDFs in C# \u2014 no Adobe dependency. See code examples on .NET 10.\" \/>\n<meta name=\"robots\" content=\"index, follow, max-snippet:-1, max-image-preview:large, max-video-preview:-1\" \/>\n<link rel=\"canonical\" href=\"https:\/\/xceed.com\/fr\/blog\/nouvelles\/pdf-library-dotnet-xceed-2026\/\" \/>\n<meta property=\"og:locale\" content=\"fr_CA\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"7 Things You Can Do with a PDF Library .NET Developers Actually Want to Use - Xceed\" \/>\n<meta property=\"og:description\" content=\"Xceed PDF Library for .NET 2.0 lets you create, edit, sign, and extract PDFs in C# \u2014 no Adobe dependency. See code examples on .NET 10.\" \/>\n<meta property=\"og:url\" content=\"https:\/\/xceed.com\/fr\/blog\/nouvelles\/pdf-library-dotnet-xceed-2026\/\" \/>\n<meta property=\"og:site_name\" content=\"Xceed\" \/>\n<meta property=\"article:published_time\" content=\"2026-03-18T20:09:27+00:00\" \/>\n<meta property=\"article:modified_time\" content=\"2026-03-30T14:13:15+00:00\" \/>\n<meta property=\"og:image\" content=\"https:\/\/xceed.com\/wp-content\/uploads\/2026\/03\/4cd2181d-9fac-40e6-958a-38bba5dc423e.png\" \/>\n\t<meta property=\"og:image:width\" content=\"1536\" \/>\n\t<meta property=\"og:image:height\" content=\"1024\" \/>\n\t<meta property=\"og:image:type\" content=\"image\/png\" \/>\n<meta name=\"author\" content=\"Technical Writer\" \/>\n<meta name=\"twitter:card\" content=\"summary_large_image\" \/>\n<meta name=\"twitter:label1\" content=\"Written by\" \/>\n\t<meta name=\"twitter:data1\" content=\"Technical Writer\" \/>\n\t<meta name=\"twitter:label2\" content=\"Est. reading time\" \/>\n\t<meta name=\"twitter:data2\" content=\"9 minutes\" \/>\n<script type=\"application\/ld+json\" class=\"yoast-schema-graph\">{\"@context\":\"https:\\\/\\\/schema.org\",\"@graph\":[{\"@type\":\"Article\",\"@id\":\"https:\\\/\\\/xceed.com\\\/blog\\\/news\\\/pdf-library-dotnet-xceed-2026\\\/#article\",\"isPartOf\":{\"@id\":\"https:\\\/\\\/xceed.com\\\/blog\\\/news\\\/pdf-library-dotnet-xceed-2026\\\/\"},\"author\":{\"name\":\"Technical Writer\",\"@id\":\"https:\\\/\\\/xceed.com\\\/fr\\\/#\\\/schema\\\/person\\\/66fdfcd0d8aba59714ee8630310915bc\"},\"headline\":\"7 Things You Can Do with a PDF Library .NET Developers Actually Want to Use\",\"datePublished\":\"2026-03-18T20:09:27+00:00\",\"dateModified\":\"2026-03-30T14:13:15+00:00\",\"mainEntityOfPage\":{\"@id\":\"https:\\\/\\\/xceed.com\\\/blog\\\/news\\\/pdf-library-dotnet-xceed-2026\\\/\"},\"wordCount\":1827,\"commentCount\":0,\"publisher\":{\"@id\":\"https:\\\/\\\/xceed.com\\\/fr\\\/#organization\"},\"image\":{\"@id\":\"https:\\\/\\\/xceed.com\\\/blog\\\/news\\\/pdf-library-dotnet-xceed-2026\\\/#primaryimage\"},\"thumbnailUrl\":\"https:\\\/\\\/xceed.com\\\/wp-content\\\/uploads\\\/2026\\\/03\\\/4cd2181d-9fac-40e6-958a-38bba5dc423e.png\",\"keywords\":[\".net pdf\",\"#CSharp\",\"pdf C#\",\"PDF library\"],\"articleSection\":[\"All\",\"News\",\"Tutorials\"],\"inLanguage\":\"fr-CA\",\"potentialAction\":[{\"@type\":\"CommentAction\",\"name\":\"Comment\",\"target\":[\"https:\\\/\\\/xceed.com\\\/blog\\\/news\\\/pdf-library-dotnet-xceed-2026\\\/#respond\"]}]},{\"@type\":\"WebPage\",\"@id\":\"https:\\\/\\\/xceed.com\\\/blog\\\/news\\\/pdf-library-dotnet-xceed-2026\\\/\",\"url\":\"https:\\\/\\\/xceed.com\\\/blog\\\/news\\\/pdf-library-dotnet-xceed-2026\\\/\",\"name\":\"7 Things You Can Do with a PDF Library .NET Developers Actually Want to Use - Xceed\",\"isPartOf\":{\"@id\":\"https:\\\/\\\/xceed.com\\\/fr\\\/#website\"},\"primaryImageOfPage\":{\"@id\":\"https:\\\/\\\/xceed.com\\\/blog\\\/news\\\/pdf-library-dotnet-xceed-2026\\\/#primaryimage\"},\"image\":{\"@id\":\"https:\\\/\\\/xceed.com\\\/blog\\\/news\\\/pdf-library-dotnet-xceed-2026\\\/#primaryimage\"},\"thumbnailUrl\":\"https:\\\/\\\/xceed.com\\\/wp-content\\\/uploads\\\/2026\\\/03\\\/4cd2181d-9fac-40e6-958a-38bba5dc423e.png\",\"datePublished\":\"2026-03-18T20:09:27+00:00\",\"dateModified\":\"2026-03-30T14:13:15+00:00\",\"description\":\"Xceed PDF Library for .NET 2.0 lets you create, edit, sign, and extract PDFs in C# \u2014 no Adobe dependency. See code examples on .NET 10.\",\"breadcrumb\":{\"@id\":\"https:\\\/\\\/xceed.com\\\/blog\\\/news\\\/pdf-library-dotnet-xceed-2026\\\/#breadcrumb\"},\"inLanguage\":\"fr-CA\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\\\/\\\/xceed.com\\\/blog\\\/news\\\/pdf-library-dotnet-xceed-2026\\\/\"]}]},{\"@type\":\"ImageObject\",\"inLanguage\":\"fr-CA\",\"@id\":\"https:\\\/\\\/xceed.com\\\/blog\\\/news\\\/pdf-library-dotnet-xceed-2026\\\/#primaryimage\",\"url\":\"https:\\\/\\\/xceed.com\\\/wp-content\\\/uploads\\\/2026\\\/03\\\/4cd2181d-9fac-40e6-958a-38bba5dc423e.png\",\"contentUrl\":\"https:\\\/\\\/xceed.com\\\/wp-content\\\/uploads\\\/2026\\\/03\\\/4cd2181d-9fac-40e6-958a-38bba5dc423e.png\",\"width\":1536,\"height\":1024,\"caption\":\"7 Things You can do With a PDF Library\"},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\\\/\\\/xceed.com\\\/blog\\\/news\\\/pdf-library-dotnet-xceed-2026\\\/#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Home\",\"item\":\"https:\\\/\\\/xceed.com\\\/\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"Xceed PDF Library for .NET\"}]},{\"@type\":\"WebSite\",\"@id\":\"https:\\\/\\\/xceed.com\\\/fr\\\/#website\",\"url\":\"https:\\\/\\\/xceed.com\\\/fr\\\/\",\"name\":\"Xceed\",\"description\":\"Provides tools for .NET, Windows Forms, WPF, Silverlight, and ASP.NET developers to create better applications.\",\"publisher\":{\"@id\":\"https:\\\/\\\/xceed.com\\\/fr\\\/#organization\"},\"potentialAction\":[{\"@type\":\"SearchAction\",\"target\":{\"@type\":\"EntryPoint\",\"urlTemplate\":\"https:\\\/\\\/xceed.com\\\/fr\\\/?s={search_term_string}\"},\"query-input\":{\"@type\":\"PropertyValueSpecification\",\"valueRequired\":true,\"valueName\":\"search_term_string\"}}],\"inLanguage\":\"fr-CA\"},{\"@type\":\"Organization\",\"@id\":\"https:\\\/\\\/xceed.com\\\/fr\\\/#organization\",\"name\":\"Xceed\",\"url\":\"https:\\\/\\\/xceed.com\\\/fr\\\/\",\"logo\":{\"@type\":\"ImageObject\",\"inLanguage\":\"fr-CA\",\"@id\":\"https:\\\/\\\/xceed.com\\\/fr\\\/#\\\/schema\\\/logo\\\/image\\\/\",\"url\":\"https:\\\/\\\/xceed.com\\\/wp-content\\\/uploads\\\/2024\\\/04\\\/cropped-xceed-logo.png\",\"contentUrl\":\"https:\\\/\\\/xceed.com\\\/wp-content\\\/uploads\\\/2024\\\/04\\\/cropped-xceed-logo.png\",\"width\":609,\"height\":150,\"caption\":\"Xceed\"},\"image\":{\"@id\":\"https:\\\/\\\/xceed.com\\\/fr\\\/#\\\/schema\\\/logo\\\/image\\\/\"}},{\"@type\":\"Person\",\"@id\":\"https:\\\/\\\/xceed.com\\\/fr\\\/#\\\/schema\\\/person\\\/66fdfcd0d8aba59714ee8630310915bc\",\"name\":\"Technical Writer\",\"image\":{\"@type\":\"ImageObject\",\"inLanguage\":\"fr-CA\",\"@id\":\"https:\\\/\\\/secure.gravatar.com\\\/avatar\\\/0030bb8372562c953cb6409907492d051e06b7c67c4161b4a7efde2ecaff4201?s=96&d=mm&r=g\",\"url\":\"https:\\\/\\\/secure.gravatar.com\\\/avatar\\\/0030bb8372562c953cb6409907492d051e06b7c67c4161b4a7efde2ecaff4201?s=96&d=mm&r=g\",\"contentUrl\":\"https:\\\/\\\/secure.gravatar.com\\\/avatar\\\/0030bb8372562c953cb6409907492d051e06b7c67c4161b4a7efde2ecaff4201?s=96&d=mm&r=g\",\"caption\":\"Technical Writer\"},\"url\":\"https:\\\/\\\/xceed.com\\\/fr\\\/blog\\\/author\\\/technicalwriter\\\/\"}]}<\/script>\n<!-- \/ Yoast SEO plugin. -->","yoast_head_json":{"title":"7 Things You Can Do with a PDF Library .NET Developers Actually Want to Use - Xceed","description":"Xceed PDF Library for .NET 2.0 lets you create, edit, sign, and extract PDFs in C# \u2014 no Adobe dependency. See code examples on .NET 10.","robots":{"index":"index","follow":"follow","max-snippet":"max-snippet:-1","max-image-preview":"max-image-preview:large","max-video-preview":"max-video-preview:-1"},"canonical":"https:\/\/xceed.com\/fr\/blog\/nouvelles\/pdf-library-dotnet-xceed-2026\/","og_locale":"fr_CA","og_type":"article","og_title":"7 Things You Can Do with a PDF Library .NET Developers Actually Want to Use - Xceed","og_description":"Xceed PDF Library for .NET 2.0 lets you create, edit, sign, and extract PDFs in C# \u2014 no Adobe dependency. See code examples on .NET 10.","og_url":"https:\/\/xceed.com\/fr\/blog\/nouvelles\/pdf-library-dotnet-xceed-2026\/","og_site_name":"Xceed","article_published_time":"2026-03-18T20:09:27+00:00","article_modified_time":"2026-03-30T14:13:15+00:00","og_image":[{"width":1536,"height":1024,"url":"https:\/\/xceed.com\/wp-content\/uploads\/2026\/03\/4cd2181d-9fac-40e6-958a-38bba5dc423e.png","type":"image\/png"}],"author":"Technical Writer","twitter_card":"summary_large_image","twitter_misc":{"Written by":"Technical Writer","Est. reading time":"9 minutes"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"Article","@id":"https:\/\/xceed.com\/blog\/news\/pdf-library-dotnet-xceed-2026\/#article","isPartOf":{"@id":"https:\/\/xceed.com\/blog\/news\/pdf-library-dotnet-xceed-2026\/"},"author":{"name":"Technical Writer","@id":"https:\/\/xceed.com\/fr\/#\/schema\/person\/66fdfcd0d8aba59714ee8630310915bc"},"headline":"7 Things You Can Do with a PDF Library .NET Developers Actually Want to Use","datePublished":"2026-03-18T20:09:27+00:00","dateModified":"2026-03-30T14:13:15+00:00","mainEntityOfPage":{"@id":"https:\/\/xceed.com\/blog\/news\/pdf-library-dotnet-xceed-2026\/"},"wordCount":1827,"commentCount":0,"publisher":{"@id":"https:\/\/xceed.com\/fr\/#organization"},"image":{"@id":"https:\/\/xceed.com\/blog\/news\/pdf-library-dotnet-xceed-2026\/#primaryimage"},"thumbnailUrl":"https:\/\/xceed.com\/wp-content\/uploads\/2026\/03\/4cd2181d-9fac-40e6-958a-38bba5dc423e.png","keywords":[".net pdf","#CSharp","pdf C#","PDF library"],"articleSection":["All","News","Tutorials"],"inLanguage":"fr-CA","potentialAction":[{"@type":"CommentAction","name":"Comment","target":["https:\/\/xceed.com\/blog\/news\/pdf-library-dotnet-xceed-2026\/#respond"]}]},{"@type":"WebPage","@id":"https:\/\/xceed.com\/blog\/news\/pdf-library-dotnet-xceed-2026\/","url":"https:\/\/xceed.com\/blog\/news\/pdf-library-dotnet-xceed-2026\/","name":"7 Things You Can Do with a PDF Library .NET Developers Actually Want to Use - Xceed","isPartOf":{"@id":"https:\/\/xceed.com\/fr\/#website"},"primaryImageOfPage":{"@id":"https:\/\/xceed.com\/blog\/news\/pdf-library-dotnet-xceed-2026\/#primaryimage"},"image":{"@id":"https:\/\/xceed.com\/blog\/news\/pdf-library-dotnet-xceed-2026\/#primaryimage"},"thumbnailUrl":"https:\/\/xceed.com\/wp-content\/uploads\/2026\/03\/4cd2181d-9fac-40e6-958a-38bba5dc423e.png","datePublished":"2026-03-18T20:09:27+00:00","dateModified":"2026-03-30T14:13:15+00:00","description":"Xceed PDF Library for .NET 2.0 lets you create, edit, sign, and extract PDFs in C# \u2014 no Adobe dependency. See code examples on .NET 10.","breadcrumb":{"@id":"https:\/\/xceed.com\/blog\/news\/pdf-library-dotnet-xceed-2026\/#breadcrumb"},"inLanguage":"fr-CA","potentialAction":[{"@type":"ReadAction","target":["https:\/\/xceed.com\/blog\/news\/pdf-library-dotnet-xceed-2026\/"]}]},{"@type":"ImageObject","inLanguage":"fr-CA","@id":"https:\/\/xceed.com\/blog\/news\/pdf-library-dotnet-xceed-2026\/#primaryimage","url":"https:\/\/xceed.com\/wp-content\/uploads\/2026\/03\/4cd2181d-9fac-40e6-958a-38bba5dc423e.png","contentUrl":"https:\/\/xceed.com\/wp-content\/uploads\/2026\/03\/4cd2181d-9fac-40e6-958a-38bba5dc423e.png","width":1536,"height":1024,"caption":"7 Things You can do With a PDF Library"},{"@type":"BreadcrumbList","@id":"https:\/\/xceed.com\/blog\/news\/pdf-library-dotnet-xceed-2026\/#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Home","item":"https:\/\/xceed.com\/"},{"@type":"ListItem","position":2,"name":"Xceed PDF Library for .NET"}]},{"@type":"WebSite","@id":"https:\/\/xceed.com\/fr\/#website","url":"https:\/\/xceed.com\/fr\/","name":"Xceed","description":"Fournit des outils aux d\u00e9veloppeurs .NET, Windows Forms, WPF, Silverlight et ASP.NET pour cr\u00e9er de meilleures applications.","publisher":{"@id":"https:\/\/xceed.com\/fr\/#organization"},"potentialAction":[{"@type":"SearchAction","target":{"@type":"EntryPoint","urlTemplate":"https:\/\/xceed.com\/fr\/?s={search_term_string}"},"query-input":{"@type":"PropertyValueSpecification","valueRequired":true,"valueName":"search_term_string"}}],"inLanguage":"fr-CA"},{"@type":"Organization","@id":"https:\/\/xceed.com\/fr\/#organization","name":"Xceed","url":"https:\/\/xceed.com\/fr\/","logo":{"@type":"ImageObject","inLanguage":"fr-CA","@id":"https:\/\/xceed.com\/fr\/#\/schema\/logo\/image\/","url":"https:\/\/xceed.com\/wp-content\/uploads\/2024\/04\/cropped-xceed-logo.png","contentUrl":"https:\/\/xceed.com\/wp-content\/uploads\/2024\/04\/cropped-xceed-logo.png","width":609,"height":150,"caption":"Xceed"},"image":{"@id":"https:\/\/xceed.com\/fr\/#\/schema\/logo\/image\/"}},{"@type":"Person","@id":"https:\/\/xceed.com\/fr\/#\/schema\/person\/66fdfcd0d8aba59714ee8630310915bc","name":"Technical Writer","image":{"@type":"ImageObject","inLanguage":"fr-CA","@id":"https:\/\/secure.gravatar.com\/avatar\/0030bb8372562c953cb6409907492d051e06b7c67c4161b4a7efde2ecaff4201?s=96&d=mm&r=g","url":"https:\/\/secure.gravatar.com\/avatar\/0030bb8372562c953cb6409907492d051e06b7c67c4161b4a7efde2ecaff4201?s=96&d=mm&r=g","contentUrl":"https:\/\/secure.gravatar.com\/avatar\/0030bb8372562c953cb6409907492d051e06b7c67c4161b4a7efde2ecaff4201?s=96&d=mm&r=g","caption":"Technical Writer"},"url":"https:\/\/xceed.com\/fr\/blog\/author\/technicalwriter\/"}]}},"_links":{"self":[{"href":"https:\/\/xceed.com\/fr\/wp-json\/wp\/v2\/posts\/3567","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/xceed.com\/fr\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/xceed.com\/fr\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/xceed.com\/fr\/wp-json\/wp\/v2\/users\/17"}],"replies":[{"embeddable":true,"href":"https:\/\/xceed.com\/fr\/wp-json\/wp\/v2\/comments?post=3567"}],"version-history":[{"count":0,"href":"https:\/\/xceed.com\/fr\/wp-json\/wp\/v2\/posts\/3567\/revisions"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/xceed.com\/fr\/wp-json\/wp\/v2\/media\/3569"}],"wp:attachment":[{"href":"https:\/\/xceed.com\/fr\/wp-json\/wp\/v2\/media?parent=3567"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/xceed.com\/fr\/wp-json\/wp\/v2\/categories?post=3567"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/xceed.com\/fr\/wp-json\/wp\/v2\/tags?post=3567"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}