VellumPdf.Layout
2.3.0
dotnet add package VellumPdf.Layout --version 2.3.0
NuGet\Install-Package VellumPdf.Layout -Version 2.3.0
<PackageReference Include="VellumPdf.Layout" Version="2.3.0" />
<PackageVersion Include="VellumPdf.Layout" Version="2.3.0" />
<PackageReference Include="VellumPdf.Layout" />
paket add VellumPdf.Layout --version 2.3.0
#r "nuget: VellumPdf.Layout, 2.3.0"
#:package VellumPdf.Layout@2.3.0
#addin nuget:?package=VellumPdf.Layout&version=2.3.0
#tool nuget:?package=VellumPdf.Layout&version=2.3.0
VellumPdf.Layout
The high-level document builder of VellumPdf, a dependency-free PDF library for .NET 10 implemented clean-room from ISO 32000. It pulls in VellumPdf.Kernel, so for most applications this is the only package you need to add.
- Paragraphs, headings, lists, tables, images, pie charts, header/footer bands, and bookmarks.
- Automatic pagination and tagged content for accessible, archival output.
- PDF/A-2b/2u/2a conformance, CI-validated with veraPDF.
Install
dotnet add package VellumPdf.Layout
Usage
using VellumPdf.Fonts; // Standard14
using VellumPdf.Layout; // Document
using VellumPdf.Layout.Core; // TextStyle
using VellumPdf.Layout.Elements; // Heading, Paragraph
using var doc = new Document();
doc.SetDefaultFont(new TextStyle { Font = Standard14.Helvetica, FontSize = 11 });
doc.Add(new Heading("Hello, world!"));
doc.Add(new Paragraph("Generated with VellumPdf — no native dependencies."));
doc.Save("hello.pdf");
Need precise, low-level drawing instead? Use the VellumPdf.Kernel canvas directly.
Documentation
Layout guide, with a capability table and worked examples: https://github.com/Tim81/VellumPDF/blob/main/docs/layout-guide.md
Quick start and examples: https://github.com/Tim81/VellumPDF#quick-start
Capabilities
Built from src/VellumPdf.Layout/PublicAPI.Shipped.txt and the test suite, not from the roadmap
prose — a row is only marked Supported where a test or a public member proves it. See the
Layout guide for the narrative
walkthrough this table summarizes.
| Capability | Status | Target milestone / ISO reference |
|---|---|---|
| Paragraph flow: wrapping, alignment (left/center/right/justify), mixed-style inline runs | ✅ Supported | — |
| Tables: rows, columns, row spanning, borders | ✅ Supported | — |
| Lists: ordered (decimal/alpha/roman), unordered, nested | ✅ Supported | — |
| Headers and footers with page-number templates | ✅ Supported | — |
| Images: JPEG, PNG (incl. interlaced and 16-bit), CCITT G4, TIFF-LZW | ✅ Supported | — |
Font embedding and subsetting: TrueType (glyf) and OpenType/CFF |
✅ Supported | — |
| Links (URI) and document outline/bookmarks | ✅ Supported | — |
| Pie charts, including PDF/UA figure vs. decorative-artifact tagging | ✅ Supported | — |
| PDF/A conformance: 2a, 2b, 2u | ✅ Supported | ISO 19005-2 (PDF/A-2 profiles) |
| PDF/UA-1 accessibility tagging | ✅ Supported | ISO 14289-1 |
| Document metadata, XMP packet, document ID | ✅ Supported | — |
CMYK / ICC output intents via Document.UseCmykOutputIntent/SetPdfAOutputIntent |
✅ Supported | delegates to Kernel; veraPDF-proven |
Encryption via Document.Encrypt |
✅ Supported | ISO 32000-2 §7.6 (delegates to Kernel) |
| Barcode symbols as a Layout element | ❌ Not yet (only an IRenderer extension seam exists) |
no tracked milestone |
| Form elements with their own labels; build-time accessibility diagnostics | ⏳ Planned | Layout C |
| PDF/A-1 and PDF/A-4 | ⏳ Planned | v2.5 (#218, #222) |
| PDF/UA-2 element set (generated contents/indexes, captions, table header semantics) | ⏳ Planned | Layout B |
| Footnotes and endnotes | ⏳ Planned | Layout B |
| Floats and hyphenation | ⏳ Planned | Layout D |
| Widow and orphan control | ⏳ Planned | Layout D |
| Multi-column flow | ⏳ Planned | Layout F |
| Additional chart types beyond pie | ⏳ Planned | Layout F |
| SVG import | ⏳ Planned | Layout F (epic) |
| Unicode bidi, right-to-left, and complex-script shaping | ⏳ Planned | Layout G (epic) |
The VellumPdf family
| Package | Status | Summary |
|---|---|---|
| VellumPdf.Kernel | Stable | Low-level PDF object model, canvas, fonts, images, encryption. |
| VellumPdf.Fonts.Standard14 | Stable | Embeddable standard-14 font substitutes for PDF/A text. |
| VellumPdf.Layout (this package) | Stable | High-level document builder: paragraphs, tables, images, pagination. |
| VellumPdf.Signing | Stable | PAdES / PKCS#7 digital signatures with timestamps and LTV. |
| VellumPdf.Reader | Preview | Opens existing PDFs, encrypted ones given their password; exposes catalog and signatures; writes a decrypted copy with configurable resource limits. |
| VellumPdf.Conformance | Stable | In-process PDF/A and PDF/UA preflight validation. |
| VellumPdf.Cli | Stable | vellum-preflight command-line PDF/A and PDF/UA validator. |
| VellumPdf.Barcodes | Stable | QR, Data Matrix, Aztec, PDF417, Code 128/GS1-128, Code 39, EAN/UPC, and ITF-14 as vectors. |
Roadmap
Planned direction, tracked as GitHub milestones. These are scopes, not commitments — the milestones carry no due dates. 2.3.0 is the latest published release.
Scope past 2.5 runs as two parallel tracks, because auditing the layout engine turned up more work than the PDF 2.0 conformance gap did. Both ship from the same version numbers.
Kernel and conformance
| Milestone | Scope |
|---|---|
| 2.3 — Reader robustness (released) | Cross-reference reconstruction for damaged files (#184), a decrypted-copy writer (#186), the /XRefStm precedence decision (#206), reader fuzzing (#99), and the CI and oracle debt that makes all of it verifiable. |
| 2.4 — PDF content extraction | Text and image extraction on top of the reader (#98), and graduating VellumPdf.Reader from Preview (#187). |
| 2.5 — PDF/A-4 and PDF/A-1 profiles | PDF/A-4 (#222) so conformance output stops downgrading to %PDF-1.7, PDF/A-1 (#218), and dropping the keys ISO 32000-2 deprecates (#325). |
| 2.6 — ISO/TS extensions to PDF 2.0 | The four Technical Specifications that amend PDF 2.0: AES-GCM (#236), PDF MAC integrity (#237), SHA-3 (#238) and EdDSA (#239). The reader currently rejects every AES-GCM file, so this closes an interoperability bug as well as adding features. |
| 2.7 — Embedded files and associated files | Attachments, the /Names tree, the missing annotation subtypes, and ISO 32000-2 §14.13 associated files. Unblocks PDF/A-4F. |
| 2.8 — Colour and paint | PDF functions, the full shading model, tiling and shading patterns, and the colour spaces beyond the device ones and ICCBased. |
| 2.9 — Rendering and resources | Transparency and blend modes, the complete ExtGState, form XObjects, inline images, optional content, and the page boundary boxes. |
| 2.10 — Font completeness | Type 1, bare CFF, simple TrueType and Type 3 fonts; predefined CMaps and vertical writing; kerning; and enforcing the fsType embedding permission the library currently parses and ignores. |
| 2.11 — Tagged PDF 2.0 writer | Structure namespaces, structure destinations, and the ISO/TS 32005 containment matrix. |
| 2.12 — PDF/UA-2 and WTPDF | The ua2, wt1a and wt1r rule sets. |
| 2.13 — Signature verification | Verifying signatures, not only producing them: integrity, coverage, chains, revocation and achieved PAdES level. |
Layout
| Milestone | Scope |
|---|---|
| Layout A — Foundations | Sections, a containment model, inline runs in every element, a unit type, named styles, renderer extensibility, and fixing a defect where an element spanning a page break emits two structure elements instead of one. |
| Layout B — Accessibility structure | The PDF/UA-2 element set, generated contents and indexes, captions, table header semantics, footnotes and endnotes, automatic numbering, tab stops with leaders, and internal links. |
| Layout C — Forms and semantics | Form elements that carry their own labels, ListNumbering fidelity, artifact property lists, and build-time accessibility diagnostics. |
| Layout D — Typography | Text decoration, optimal line breaking, widow and orphan control, hyphenation and floats, cell borders, and inline content such as images in a line of text. |
| Layout E — Composition | Composite elements and templates, page breaks, anchoring and rotation, page backgrounds, running bands that hold more than a single string, and prepress bleed and printer marks. |
| Layout F — Advanced layout | Multi-column flow, nested tables, a chart family, streaming generation, and the SVG import epic. |
| Layout G — International text | Unicode bidi and right-to-left, vertical and CJK writing, and the complex-script shaping epic. |
Editing existing documents. The only breaking milestone is 3.0.
| Milestone | Scope |
|---|---|
| 3.0 — Round-trip document model | A new round-trip type alongside the write-once PdfDocument, a memory-mapped backing store, and the new VellumPdf.Editing package (Epic #101). |
| 3.1 — Sign and fill existing documents | Signing a PDF this library did not write, and filling its form fields. Neither is possible today. |
| 3.2 — Append-only content edits | Annotations, metadata, watermarks, attachments, and appending flowed content. |
| 3.3 — Full-rewrite operations | Revision-history discard, re-encryption, and signature removal. |
| 3.4 — Structural editing | Page operations, merge and split, optimise and sanitise. |
| 3.5 — Redaction | Marking regions and applying them. Deliberately isolated: marking alone is not redaction. |
| 3.6 — Content editing | Reflowing text edits, and structure-tree round-trip editing of tagged documents. |
What this library implements of ISO 32000-2 today is inventoried, reference by reference, in
PDF 2.0 conformance. It emits a %PDF-2.0 header, which is not the
same as conformance, and the table says which is which. The Reader guide
and Layout guide each carry a capability table doing the same job for
their own package, checked against the code and test suite rather than against this roadmap.
VellumPdf.Reader is marked Preview in the table above; expect its public surface to settle
as these milestones land. VellumPdf.Conformance graduated to Stable in 2.0.
License
Apache-2.0. Source and issues: https://github.com/Tim81/VellumPDF
| 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
- VellumPdf.Kernel (>= 2.3.0)
NuGet packages (2)
Showing the top 2 NuGet packages that depend on VellumPdf.Layout:
| Package | Downloads |
|---|---|
|
VellumPdf.Signing
Optional digital-signature add-on for VellumPdf: PAdES/PKCS#7 detached CMS signatures over VellumPdf.Kernel.PdfDocument and VellumPdf.Layout.Document. References System.Security.Cryptography.Pkcs; keeps the core zero-dependency. |
|
|
VellumPdf.Barcodes
Optional barcode add-on for VellumPdf: QR (incl. GS1-mode QR and GS1 Digital Link), Micro QR, PDF417, Code 128 (incl. GS1-128), Code 39, EAN-13/EAN-8/UPC-A/UPC-E with EAN-2/EAN-5 add-ons, ITF-14, Data Matrix (incl. GS1 Data Matrix), and Aztec Code, rendered as vector rectangles over VellumPdf.Kernel.PdfCanvas and VellumPdf.Layout.Document. |
GitHub repositories
This package is not used by any popular GitHub repositories.
| Version | Downloads | Last Updated |
|---|---|---|
| 2.3.0 | 49 | 9/1/2026 |
| 2.2.0 | 58 | 8/28/2026 |
| 2.1.0 | 60 | 8/28/2026 |
| 2.0.0 | 144 | 8/17/2026 |
| 1.11.0 | 732 | 7/11/2026 |
| 1.10.0 | 1,374 | 7/7/2026 |
| 1.9.0 | 659 | 7/6/2026 |
| 1.8.2 | 133 | 7/5/2026 |
| 1.8.1 | 136 | 7/3/2026 |
| 1.8.0 | 114 | 7/3/2026 |
| 1.7.8 | 129 | 7/3/2026 |
| 1.7.7 | 129 | 7/2/2026 |
| 1.7.6 | 137 | 6/28/2026 |
| 1.7.5 | 153 | 6/23/2026 |
| 1.7.4 | 139 | 6/23/2026 |
| 1.7.3 | 130 | 6/22/2026 |
| 1.7.2 | 141 | 6/22/2026 |
| 1.7.1 | 140 | 6/21/2026 |
| 1.7.0 | 138 | 6/21/2026 |
| 1.6.0 | 157 | 6/17/2026 |
See https://github.com/Tim81/VellumPDF/blob/main/CHANGELOG.md for release notes.