Features

What JetsonPDF actually supports, grouped by area. Everything below ships in the current source.

Pick your level. JetsonPDF ships three layered authoring APIs:

Writer

A drawing-model API. Build a Document, append Pages, paint onto each page, save the bytes.

Annotations & forms

Every annotation subtype the spec describes that doesn't need a multimedia runtime ships out of the box.

Reader

Type-safe access to anything in a PDF, without ever cracking open a stream by hand.

Forms (editing) — edit existing AcroForms

The JetsonPDF.Forms assembly turns "open this PDF, fill in the fields, save it" into a one-line operation. Sits on top of the Reader and Writer; saves are emitted as single-layer incremental updates (§7.5.6) so digital signatures keep working.

Composition — extract & merge pages

The JetsonPDF.Composition assembly does page-level assembly: PageExtractor pulls a chosen subset of pages out of a PDF into a new file, and Merger concatenates whole PDFs into one. Both are a lossless COS object-graph copy (§7.3) — content, resources, fonts, images, and annotations are copied in their original encoded form, never re-rendered.

Read the Composition guide →

Fluent layout API

The JetsonPDF.Fluent namespace exposes a QuestPDF-style fluent DSL on top of the Writer. Write FluentDocument.Create(...), compose Pages out of Header/Footer/Background/Foreground/Content slots, and let the engine paginate.

Download the Fluent API reference (PDF) →

Flow document model

The JetsonPDF.Flow namespace is a Word-like retained-mode DOM. Build a FlowDocument tree of SectionParagraph / Table / BlockImage / PageBreak, mutate it freely, then call Save. The renderer paginates over the Fluent engine.

Download the Flow API reference (PDF) →

Conformance

Declare it, then verify it. JetsonPDF separates "the file says it's PDF/A" from "the file is actually PDF/A," and gives you tooling for both.

Security & signatures

WPF integration

The JetsonPDF.Wpf assembly turns JetsonPDF into a first-class WPF citizen: XamlToPdfConverter parses authoring-XAML, lets WPF run Measure / Arrange, and walks the visual tree to emit a PDF; PdfToXamlConverter turns any ReadDocument back into a XAML tree you can drop into a ContentControl. Multi-page authoring, AcroForm widgets via jetsonpdf:Form.*, PaginatedTable, and a round-trip editor sample — the WPF page has the full surface.

Read the WPF guide →

OpenSilver integration

The JetsonPDF.OpenSilver package is the second walker for the same xmlns:jetsonpdf authoring dialect — running in WebAssembly via OpenSilver instead of WPF. Same Document/Page tree, same annotations, same AcroForm widgets, same {jetsonpdf:PageNumber} / {jetsonpdf:Base64Image} markup extensions; ships as netstandard2.0, runs in a Wasm browser app, a WebView2 simulator, or a Playwright-driven Chromium CLI — no WPF, no STA thread, no Windows.

Read the OpenSilver guide →

PDFML — declarative markup

PDFML is JetsonPDF's declarative XML language for PDFs: clean, prefix-free markup (<Document> / <Page> / <TextBlock> / <Grid>) that renders deterministically to ISO 32000-2, with WPF-style {Binding} data binding built in.

Read the PDFML guide →

PDF → TIFF rasterization

The JetsonPDF.PdfToTiffConverter package rasterizes any PDF into a multipage TIFF. It drives the same PdfToXamlConverter render pipeline the WPF viewer uses — each page becomes a XAML tree, WPF runs Measure / Arrange, a RenderTargetBitmap captures it, and the managed JetsonPDF.Tiff writer encodes the frames. No GDI+, no System.Drawing.

The desktop converter is Windows-only and must run on an STA thread (it drives the WPF render path). See the WPF guide and the OpenSilver guide for the full surface.

See it in action →