PortableDocument.Core
0.1.0-preview.3
See the version list below for details.
dotnet add package PortableDocument.Core --version 0.1.0-preview.3
NuGet\Install-Package PortableDocument.Core -Version 0.1.0-preview.3
<PackageReference Include="PortableDocument.Core" Version="0.1.0-preview.3" />
<PackageVersion Include="PortableDocument.Core" Version="0.1.0-preview.3" />
<PackageReference Include="PortableDocument.Core" />
paket add PortableDocument.Core --version 0.1.0-preview.3
#r "nuget: PortableDocument.Core, 0.1.0-preview.3"
#:package PortableDocument.Core@0.1.0-preview.3
#addin nuget:?package=PortableDocument.Core&version=0.1.0-preview.3&prerelease
#tool nuget:?package=PortableDocument.Core&version=0.1.0-preview.3&prerelease
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.
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
A filled, interactive event-registration form
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/— thePortableDocument.*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/andsamples/— 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 undertests/fixtures/.tools/FreeDF.EditorSmoke/— Chromium editor, accessibility, responsive, offline, and performance smoke checks.bench/anddocs/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 | Versions 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. |
-
net10.0
- GregsEx (>= 0.5.3)
- System.Security.Cryptography.Pkcs (>= 10.0.14)
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 |