PortableDocument.Core 0.1.0-preview.2

This is a prerelease version of PortableDocument.Core.
There is a newer prerelease version of this package available.
See the version list below for details.
dotnet add package PortableDocument.Core --version 0.1.0-preview.2
                    
NuGet\Install-Package PortableDocument.Core -Version 0.1.0-preview.2
                    
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="PortableDocument.Core" Version="0.1.0-preview.2" />
                    
For projects that support PackageReference, copy this XML node into the project file to reference the package.
<PackageVersion Include="PortableDocument.Core" Version="0.1.0-preview.2" />
                    
Directory.Packages.props
<PackageReference Include="PortableDocument.Core" />
                    
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 PortableDocument.Core --version 0.1.0-preview.2
                    
#r "nuget: PortableDocument.Core, 0.1.0-preview.2"
                    
#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 PortableDocument.Core@0.1.0-preview.2
                    
#: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=PortableDocument.Core&version=0.1.0-preview.2&prerelease
                    
Install as a Cake Addin
#tool nuget:?package=PortableDocument.Core&version=0.1.0-preview.2&prerelease
                    
Install as a Cake Tool

FreeDF

A free PDF editor and PDF 2.0 engine written in C#/.NET. Open, inspect, render, edit, and save PDFs with FreeDF's browser editor, or use the PortableDocument.* libraries directly in your .NET application.

Open FreeDF in your browser PDF 2.0 coverage

Try the editor

Open the browser editor and try the 18-page showcase. The app also includes a set of small sample PDFs covering forms, annotations, layers, encryption, accessible documents, typography, images, charts, and more; see the sample index.

The GitHub Pages editor runs as WebAssembly in your browser. Your PDFs are opened and processed on your device; they are not uploaded to a PDF service. The installable PWA caches the app for offline reuse. For architecture, privacy, offline behavior, and editor details, see docs/browser-editor.md.

The app

These are screenshots of FreeDF itself, with two real sample documents opened in the editor. GitHub selects the matching image for light or dark mode.

A dashboard of charts, sparklines, and KPIs

FreeDF editor in light mode with the dashboard charts sample open FreeDF editor in dark mode with the dashboard charts sample open

A filled, interactive event-registration form

FreeDF editor in light mode with the AcroForm event-registration sample open FreeDF editor in dark mode with the AcroForm event-registration sample open

In the editor you can:

  • Open and render PDFs; navigate pages and outlines, search text, and inspect document properties.
  • Edit supported page text and graphic objects; add text, shapes, images, and annotations; fill and edit AcroForms.
  • Insert, duplicate, delete, rotate, reorder, and merge pages; undo changes, preview the rendered page, and download the result.
  • Export pages as PDFs or images, extract text, and create compressed or password-protected PDFs.
  • Work with encrypted documents using a password prompt. Passwords are not stored, and the browser build does not save decrypted recovery copies.
  • Choose light/dark/system appearance, adjust the interface layout, and install the PWA for offline use.

Editing is intentionally scoped: it is not a general-purpose vector design program, and some complex PDF structures have conservative or unsupported edit paths. See the editor operation inventory and PDF 2.0 coverage matrix for implementation details and known gaps.

Run locally

The local HTTP editor is useful for development and opens an optional PDF on startup:

dotnet run -c Release --project tools/FreeDF.EditorWeb
dotnet run -c Release --project tools/FreeDF.EditorWeb -- .\samples\25-dashboard-charts.pdf

By default, the editor is available at http://localhost:5080. To choose a different port, pass --port 5081. This local host serves the editor UI and its PDF API from your machine; it is separate from the browser-local WebAssembly deployment described above.

Use the .NET libraries

The libraries are split by responsibility: PDF file structure and writing, document-level features, content interpretation, and rendering. For example:

using PortableDocument.Document;
using Pdf = PortableDocument.Render.PortableDocument;

var document = PdfDocument.Load(bytes);
var text = Pdf.ExtractText(document.Pages[0]);
var renderedPage = Pdf.RenderPage(document.Pages[0], dpi: 96);

PdfDocument loads and exposes a PDF; PortableDocument.Render.PortableDocument provides the rendering and text-extraction entry points. The alias keeps that class distinct from the PortableDocument root namespace.

FreeDF names the editor, PWA, repository, and FreeDF.* projects and tools. The repository is IEvangelist/FreeDF. The PortableDocument.* library API is unchanged by the repository rename. Existing browser data is migrated locally; historical benchmark reports retain their original tool identities and measurements.

Project What it provides
PortableDocument.Core PDF objects, parsing, file structure, filters, writing, encryption, and signature primitives
PortableDocument.Document Document/page models, editing and page import, annotations, forms, metadata, navigation, structure, and validation
PortableDocument.Content PDF page-content interpretation, fonts and text shaping, color spaces, images, graphics, and optional-content layers
PortableDocument.Render Software page rendering, structured text extraction, annotation tools, and redaction
PortableDocument.FallbackFonts Bundled font fallback assets used by the browser editor
PortableDocument.Signing.Http HTTP RFC 3161 timestamp-authority client

PDF actions and embedded content are inspected as data; parsing a PDF does not execute its JavaScript, launch actions, or open remote destinations. Validation and signature/trust APIs report what they can establish; they are not a substitute for a qualified PDF/A or PDF/UA certification workflow.

What's in this repository

  • src/ — the PortableDocument.* libraries above.
  • tools/FreeDF.EditorWeb/ — local HTTP-hosted PDF editor.
  • tools/FreeDF.EditorWasm/ — browser-local WebAssembly editor used by the static GitHub Pages app.
  • tools/FreeDF.Samples/ and samples/ — C# sample-PDF generators and the committed example documents. The sample README explains each document, the encrypted samples, and how to generate the full collection.
  • tests/FreeDF.Tests/ — parser, document, rendering, editor, conformance, and regression tests, with PDF fixtures under tests/fixtures/.
  • tools/FreeDF.EditorSmoke/ — Chromium editor, accessibility, responsive, offline, and performance smoke checks.
  • bench/ and docs/performance/ — benchmark tooling and recorded results.
  • docs/spec-matrix.md — current ISO 32000-2 coverage and known gaps.

Build and test

Requires the .NET SDK version pinned in global.json. PortableDocument.slnx is the canonical solution:

dotnet build PortableDocument.slnx -c Release
dotnet test PortableDocument.slnx -c Release

Package versions are centrally managed in Directory.Packages.props. The .NET libraries are packaged for NuGet; see NuGet packages and trusted publishing.

Project status

This is an actively developed PDF 2.0 implementation, not a claim of complete ISO 32000-2 parity. The coverage matrix marks implemented clauses as Done, Partial, or Todo and links to the remaining gaps. See docs/spec-matrix.md and docs/spec-backlog.md before relying on a feature for a particular class of PDFs.

Product Compatible and additional computed target framework versions.
.NET 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 (1)

Showing the top 1 NuGet packages that depend on PortableDocument.Core:

Package Downloads
PortableDocument.Document

PDF document model, page editing, forms, annotations, metadata, navigation, structure, and validation.

GitHub repositories

This package is not used by any popular GitHub repositories.

Version Downloads Last Updated
0.1.0-preview.5 56 11/3/2026
0.1.0-preview.3 51 11/3/2026
0.1.0-preview.2 53 11/3/2026