PdfNetStack 1.1.0

dotnet add package PdfNetStack --version 1.1.0
                    
NuGet\Install-Package PdfNetStack -Version 1.1.0
                    
This command is intended to be used within the Package Manager Console in Visual Studio, as it uses the NuGet module's version of Install-Package.
<PackageReference Include="PdfNetStack" Version="1.1.0" />
                    
For projects that support PackageReference, copy this XML node into the project file to reference the package.
<PackageVersion Include="PdfNetStack" Version="1.1.0" />
                    
Directory.Packages.props
<PackageReference Include="PdfNetStack" />
                    
Project file
For projects that support Central Package Management (CPM), copy this XML node into the solution Directory.Packages.props file to version the package.
paket add PdfNetStack --version 1.1.0
                    
#r "nuget: PdfNetStack, 1.1.0"
                    
#r directive can be used in F# Interactive and Polyglot Notebooks. Copy this into the interactive tool or source code of the script to reference the package.
#:package PdfNetStack@1.1.0
                    
#:package directive can be used in C# file-based apps starting in .NET 10 preview 4. Copy this into a .cs file before any lines of code to reference the package.
#addin nuget:?package=PdfNetStack&version=1.1.0
                    
Install as a Cake Addin
#tool nuget:?package=PdfNetStack&version=1.1.0
                    
Install as a Cake Tool

PdfNetStack

Create, edit, compress and sign PDF files in .NET. Pure C#, MIT licensed, no native binaries, no Ghostscript. Created and maintained by Jamal Abdelkhalek at JADEV.

PdfNetStack makes PDFs smaller without changing a single rendered pixel, then proves it: the output is re-read and compared to the source object by object before it is returned. If anything differs, you get your original bytes back.

using PdfNetStack;

var result = await PdfOptimizer.OptimizeFileAsync("manual.pdf", "manual.optimized.pdf");
Console.WriteLine($"{result.Disposition}: saved {result.SavingPercent:F1}%");

Features

  • Lossless PDF compression: object streams, compressed cross-reference streams, unused object and resource removal, compact content streams, Flate recompression at level 9, PNG prediction for raw images, duplicate font, image and resource merging, merging of separately embedded subsets of one font. Optional linearized output for fast web view.
  • Lossless JPEG optimization: Huffman tables rebuilt per image, progressive JPEGs rewritten as baseline, metadata segments dropped. DCT coefficients stay identical.
  • Optional lossy JPEG compression: JpegQuality requantizes JPEG images at a libjpeg quality, never finer than the original.
  • Optional lossy image options: MaxImageDpi downsamples oversampled images, ConvertImagesToJpeg turns photographs into JPEG, and MinImageSsim keeps any image a change would visibly hurt. CompressionEffort.Exhaustive squeezes Flate streams further for archives.
  • Built-in equivalence proof on every rewrite, also available on its own as PdfEquivalence.FindDifference to check the output of any PDF tool.
  • Editing: open, create, merge, split, reorder, rotate, remove and import pages; document info; bookmarks. Large files open on demand from a stream and save as incremental updates.
  • Encryption: open RC4, AES-128 and AES-256 protected PDFs; write AES-256 or AES-128 with user and owner passwords and permissions.
  • Creating documents: a drawing canvas on new and existing pages; standard 14, TrueType, OpenType, WOFF and WOFF2 fonts embedded as subsets, variable font instances; text layout with justification, right to left and complex scripts; JPEG, PNG, GIF, BMP, TIFF, WebP and SVG images; pages of other PDFs as watermarks and letterheads.
  • Text and images out: page text in reading order, letters and words with bounds and fonts; images per page decoded to pixels, including JPEG 2000, JBIG2 and CCITT scans.
  • Forms and annotations: create, read and fill AcroForm fields with generated appearances; links, notes, markup, stamps, ink and shapes; flattening.
  • Signatures and archiving: PAdES B-B, B-T, B-LT and B-LTA signing and verification with chain, revocation and policy checks; PDF/A-1b to PDF/A-4 output; Factur-X and ZUGFeRD invoices.
  • Safe on untrusted files: bounded parsing and decoding, decompression bomb limits, fuzz tested. Signed and encrypted files are never rewritten by the optimizer.

Editing

PdfDocument doc = PdfDocument.Open("contract.pdf");
doc.Pages.RemoveAt(0);
doc.Pages[0].Rotate(90);
doc.Pages.Import(PdfDocument.Open("annex.pdf").Pages);
doc.Info.Title = "Signed contract";
doc.Security.Encrypt(userPassword: "read", ownerPassword: "admin");
doc.Save("contract-final.pdf");   // optimized and verified by default

Compatibility

Target Runs on Dependencies
net8.0, net10.0 .NET 8, 9, 10 and later. Trim and Native AOT compatible None
netstandard2.0 .NET Framework 4.6.2+, Mono, Unity, .NET Core 2.0+ System.Memory (Microsoft, MIT)

Tested on Windows, Linux and macOS, on .NET Framework 4.8, .NET 8 and .NET 10.

Results

On a real-world corpus of 1,296 PDFs (569 MiB), every optimized file was rendered with PDFium and compared with its original: zero differing pixels, zero verification failures.

Product Compatible and additional computed target framework versions.
.NET net5.0 was computed.  net5.0-windows was computed.  net6.0 was computed.  net6.0-android was computed.  net6.0-ios was computed.  net6.0-maccatalyst was computed.  net6.0-macos was computed.  net6.0-tvos was computed.  net6.0-windows was computed.  net7.0 was computed.  net7.0-android was computed.  net7.0-ios was computed.  net7.0-maccatalyst was computed.  net7.0-macos was computed.  net7.0-tvos was computed.  net7.0-windows was computed.  net8.0 is compatible.  net8.0-android was computed.  net8.0-browser was computed.  net8.0-ios was computed.  net8.0-maccatalyst was computed.  net8.0-macos was computed.  net8.0-tvos was computed.  net8.0-windows was computed.  net9.0 was computed.  net9.0-android was computed.  net9.0-browser was computed.  net9.0-ios was computed.  net9.0-maccatalyst was computed.  net9.0-macos was computed.  net9.0-tvos was computed.  net9.0-windows was computed.  net10.0 is compatible.  net10.0-android was computed.  net10.0-browser was computed.  net10.0-ios was computed.  net10.0-maccatalyst was computed.  net10.0-macos was computed.  net10.0-tvos was computed.  net10.0-windows was computed. 
.NET Core netcoreapp2.0 was computed.  netcoreapp2.1 was computed.  netcoreapp2.2 was computed.  netcoreapp3.0 was computed.  netcoreapp3.1 was computed. 
.NET Standard netstandard2.0 is compatible.  netstandard2.1 was computed. 
.NET Framework net461 was computed.  net462 was computed.  net463 was computed.  net47 was computed.  net471 was computed.  net472 was computed.  net48 was computed.  net481 was computed. 
MonoAndroid monoandroid was computed. 
MonoMac monomac was computed. 
MonoTouch monotouch was computed. 
Tizen tizen40 was computed.  tizen60 was computed. 
Xamarin.iOS xamarinios was computed. 
Xamarin.Mac xamarinmac was computed. 
Xamarin.TVOS xamarintvos was computed. 
Xamarin.WatchOS xamarinwatchos was computed. 
Compatible target framework(s)
Included target framework(s) (in package)
Learn more about Target Frameworks and .NET Standard.
  • .NETStandard 2.0

  • net10.0

    • No dependencies.
  • net8.0

    • No dependencies.

NuGet packages (3)

Showing the top 3 NuGet packages that depend on PdfNetStack:

Package Downloads
PdfNetStack.Azure

Azure Blob Storage pipeline for PdfNetStack: reads a source blob, writes the optimized PDF to a separate container under a content-addressed name, with a provenance sidecar. Managed identity only, no account keys. By Jamal Abdelkhalek, JADEV.

PdfNetStack.Html

Convert HTML and CSS to PDF in .NET without a browser: an HTML5 parser, CSS cascade, block, inline, table and flex layout, paged media with headers, footers and page numbers, web fonts, right to left and Arabic text. Pure C#, MIT licensed, built on PdfNetStack. By Jamal Abdelkhalek, JADEV.

PdfNetStack.Ocr

OCR for PdfNetStack: finds the scan on each page, recognizes Latin and Arabic text with PP-OCRv5 models on ONNX Runtime, and adds an invisible text layer so the PDF can be searched and copied. Managed pre and post processing; PDF bytes never reach native code. The models ship separately in PdfNetStack.Ocr.Models. MIT licensed. By Jamal Abdelkhalek, JADEV.

GitHub repositories

This package is not used by any popular GitHub repositories.

Version Downloads Last Updated
1.1.0 0 11/5/2026
1.0.0 143 10/28/2026