miPDFlib 0.6.0

dotnet add package miPDFlib --version 0.6.0
                    
NuGet\Install-Package miPDFlib -Version 0.6.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="miPDFlib" Version="0.6.0" />
                    
For projects that support PackageReference, copy this XML node into the project file to reference the package.
<PackageVersion Include="miPDFlib" Version="0.6.0" />
                    
Directory.Packages.props
<PackageReference Include="miPDFlib" />
                    
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 miPDFlib --version 0.6.0
                    
#r "nuget: miPDFlib, 0.6.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 miPDFlib@0.6.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=miPDFlib&version=0.6.0
                    
Install as a Cake Addin
#tool nuget:?package=miPDFlib&version=0.6.0
                    
Install as a Cake Tool

miPDFlib

Open-source PDF library for .NET - create, edit, sign and validate PDFs without native dependencies.

NuGet License CI

An open-source (Apache-2.0) PDF library for .NET 8 / .NET 10: pure managed code, no native dependencies. Create, read, modify, merge, fill forms, extract text, encrypt and digitally sign (PAdES) PDF documents.

dotnet add package miPDFlib

The namespace is MiPdf (using MiPdf;). Versions up to 0.2.3-alpha were published under the package ID MiPdf, which is deprecated; switch the package reference to miPDFlib, no code changes are needed.

Why miPDFlib?

  • Apache-2.0: free in closed commercial products - no AGPL obligations, no revenue limits, no licence key.
  • eIDAS-ready signatures: PAdES B-B to B-LTA, HSM/cloud signers and two-step signing, built on .NET cryptography without BouncyCastle.
  • Archiving and e-invoices: PDF/A, PDF/UA and ZUGFeRD / Factur-X / XRechnung hybrid invoices.
  • Coming from iText or Syncfusion? See the comparison and the migration guide.

Versioning: all planned feature areas are implemented and tested. Releases follow Semantic Versioning; until 1.0 the public API may still change between minor versions (see the changelog).

Features

Area Highlights
Core tolerant parser (xref tables/streams, object streams, automatic repair), lazy loading, full and incremental saving, compact output with object streams, files of any size read on demand (also > 2 GB)
Creating content canvas (paths, colors RGB/CMYK/gray, transparency, transformations), standard 14 fonts, TrueType/OpenType embedding with subsetting (full Unicode), JPEG/PNG images incl. alpha
Layout paragraphs with mixed formatting, justification, kerning and hyphenation; lists; tables with repeated headers, column and row spans and rows split across pages; images, barcodes, automatic page breaks, header/footer with "page x of y"
Manipulation merge, split, import/reorder/rotate/delete pages, page templates (letterheads), watermarks, bookmarks, links, annotations (highlight/underline/strike-out, free text, stamps, ink, shapes, file attachments, flattening)
Redaction true removal of text, image pixels, vector graphics, annotations and form fields in areas, by text or regular expression
Text extraction reading order, rotated text, ToUnicode/encodings/glyph names, words and lines with positions, text search (string/regex), image extraction, free-space detection
Forms read/fill/create AcroForm fields (text, check box, radio, combo, list, push button, signature) with appearance generation, flattening, merging; FDF/XFDF import and export; XFA data
Encryption open and create encrypted PDFs: AES-256, AES-128, RC4; passwords and permissions
Signatures PAdES B-B/B-T/B-LT/B-LTA, RFC 3161 and document time-stamps, visible signatures, certification (DocMDP), field locks (FieldMDP), HSM/cloud signers, deferred two-step signing, multiple signatures, verification
PDF/A PDF/A-1b/2b/2u/3b/3u output (XMP, sRGB output intent) and a basic conformance checker
Accessibility tagged PDF and PDF/UA-1: automatic tagging by the layout engine, manual tagging API, PDF/UA checker
Attachments / e-invoices embedded files with PDF/A-3 associated files, ZUGFeRD 2.x / Factur-X / XRechnung hybrid invoices, consistency check of the visible invoice against the XML
Hardening resource limits against decompression bombs and CPU exhaustion, SSRF-safe revocation fetching, fuzz-tested parser
Barcodes QR Code, EPC/GiroCode, Data Matrix (incl. GS1), Code 128/GS1-128, EAN-13/8, UPC-A, Code 39, ITF (vector output)

The only dependency is System.Security.Cryptography.Pkcs (MIT, Microsoft) for CMS signatures.

Quick start

using MiPdf;
using MiPdf.Fonts;
using MiPdf.Graphics;
using MiPdf.Layout;
using MiPdf.Signatures;

// create
using var pdf = PdfDocument.Create();
using (var layout = new LayoutDocument(pdf, PageSize.A4, new Thickness(50)))
{
    layout.Add(new Paragraph("Hello miPDFlib", PdfStandardFont.HelveticaBold, 20));
    var table = new Table(1, 3);
    table.AddHeaderCell("Pos"); table.AddHeaderCell("Description");
    table.AddCell("1"); table.AddCell("Consulting");
    layout.Add(table);
}
pdf.Save("hello.pdf");

// modify
using var doc = PdfDocument.Open("hello.pdf");
doc.GetPage(1).AddTextWatermark("DRAFT");
doc.Save("hello-draft.pdf");

// sign
byte[] signed = PdfSigner.Sign(File.ReadAllBytes("hello.pdf"), CertificateSigner.FromPfx("me.pfx", "pw"),
    new PdfSignatureOptions { Reason = "Approved", TimestampClient = new HttpTimestampClient("http://timestamp.digicert.com") });

Documentation

API reference and guides – every namespace, class and method, searchable.

How-to guides: Sign a PDF with PAdES in .NET · Create a ZUGFeRD / XRechnung invoice in C# · Replace iText with an Apache-2.0 library

Sample ASP.NET Core web API with Dockerfile: samples/MiPdf.WebApi

Used by

  • miPDFsign Community - open-source (Apache-2.0) signature app for Windows tablets: handwritten signatures with biometric data as PAdES B to LTA
  • miPDFsign and miPDFsign Cloud - commercial signing app and service by the author (mitterbucher.com)

License

Licensed under the Apache License, Version 2.0. See LICENSE and NOTICE. Copyright 2026 Wolfgang Mitterbucher.

Source code, issues and contributions: github.com/Mibuw/miPDFlib.

Author

Wolfgang Mitterbucher, Software Engineering & Digital Identity, Leonding (Austria): www.mitterbucher.com · LinkedIn · office@mitterbucher.com

Product Compatible and additional computed target framework versions.
.NET 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. 
Compatible target framework(s)
Included target framework(s) (in package)
Learn more about Target Frameworks and .NET Standard.

NuGet packages

This package is not used by any NuGet packages.

GitHub repositories

This package is not used by any popular GitHub repositories.

Version Downloads Last Updated
0.6.0 0 11/3/2026
0.5.0 75 11/2/2026
0.4.0 75 11/2/2026
0.3.1 74 11/2/2026
0.3.0 89 10/30/2026
0.2.8-alpha 79 10/30/2026
0.2.7-alpha 69 10/30/2026
0.2.6-alpha 79 10/30/2026
0.2.5-alpha 68 10/29/2026
0.2.4-alpha 92 10/29/2026