Quillwright 0.2.4

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

Quillwright

A .NET 10 library for Word documents (Apache-2.0). Layered the way System.Text.Json is — primitives, streaming, document model, typed templating — with a paragraph representation built for the way Word actually stores text.

using Quillwright.Model;

var doc = WordDocument.Create();
doc.Sections[0].AddParagraph("Supply agreement", "Heading1");
doc.Sections[0].AddParagraph("Signed today.");
await doc.SaveAsync("agreement.docx");

What it does

  • Edits real documents without breaking them. Charts, SmartArt, embedded objects, custom XML, themes and VBA are carried through byte for byte. Verified against 934 documents produced by Word over two decades: every one round-trips with no part lost, identical text, and no new schema violation.
  • Data-oriented paragraphs. A paragraph is one text buffer with runs, hyperlinks, bookmarks and comment ranges laid over it as offset ranges. paragraph.Text is free, and find-and-replace across run boundaries is an ordinary splice rather than a stitching job.
  • Constant-memory streaming in both directions: DocxWriter generates reports without building a model, DocxReader yields one block at a time.
  • An honest style resolver. Document defaults, table styles with their conditional regions, numbering, the basedOn chain and direct formatting, layered in the order ISO-29500 specifies.
  • Typed templating with no reflection. [WordTemplate] on a record, and an incremental source generator writes the binder.
  • Tracked changes you can record, and a redline from two documents: DocumentComparer.Compare(original, revised) records every difference as an ordinary tracked change, so accepting them all yields the revised text and rejecting them all the original.
  • Documents that assemble. contract.Append(annex) copies another document's content in, carrying the styles, numbering, images, notes and comments it leans on.
  • Fields that compute, equations as a tree, legacy .doc both ways, digital signatures verified and written, and macros you can read.
  • PDF, laid out properly. document.SaveAsPdf("report.pdf") paginates with real font metrics: wrapping and justification, hyphenation, tables with merged cells and repeating headers, footnotes, headers and footers with working page numbers, text flowing round floating pictures, right-to-left scripts. Optionally tagged for PDF/UA.
  • Markdown and HTML, both ways. Deterministic export and import over a documented semantic subset; this is not a lossless round trip. The HTML parser implements the WHATWG parsing algorithm rather than approximating it, and diagnostics identify deliberate approximations.
  • RTF 1.9.1 as a semantic conversion. Quillwright.Rtf imports and exports Unicode and code pages, direct character/paragraph formatting, tab stops, breaks and comments without starting Word.
  • Async-first I/O on the .NET 10 asynchronous ZipArchive APIs, AOT- and trim-safe.

Packages

Package What it adds
Quillwright The model, reader/writer, streaming, editing, comparison, Markdown and HTML
Quillwright.Templates Typed templating and its incremental source generator
Quillwright.Doc Reading and writing Word 97-2003 .doc files
Quillwright.Pdf Rendering to PDF on top of Inkwright: pagination, tables, tagging
Quillwright.Rtf Semantic import and export of the supported RTF 1.9.1 subset

Documentation

The guides live in the repository, which is also where the conformance matrix says what is read, written, preserved and evaluated, format by format, with the boundary of each:

Deliberate limits

The core has no layout engine, so AutoFit is not resolved and a field that needs a layout is left for Word to recompute; pagination lives in Quillwright.Pdf. SmartArt survives a round trip but has no API; embedded objects, web extensions and macros are read but never authored, and a chart is read and its data replaced but never created. Encryption is read four ways and written one. RTF, Markdown and HTML are semantic conversions in both directions; ODT is not read or written. Writing .doc is a conversion rather than a round trip, with a warning naming whatever changed.

Which of these is read, written, preserved or evaluated — and where each one stops — is in the conformance matrix.

Licence

Apache License 2.0 — see LICENSE and THIRD-PARTY-NOTICES.md.

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.
  • net10.0

    • No dependencies.

NuGet packages (4)

Showing the top 4 NuGet packages that depend on Quillwright:

Package Downloads
Quillwright.Doc

Reads legacy Word 97-2003 (.doc) binary documents into the Quillwright model, so they can be inspected or saved as .docx. Implements the [MS-DOC] compound file, piece table and formatting streams directly, with no Office dependency.

Quillwright.Templates

Typed Word templating for Quillwright: fill content controls, {{placeholders}} and MERGEFIELDs from a model, repeat table rows over collections, all through an incremental source generator with no reflection.

Quillwright.Pdf

Renders Quillwright Word documents to PDF: pagination of text, tables, lists, sections, headers and footers on top of Inkwright. No Office and no native dependency.

Quillwright.Rtf

Imports and exports Rich Text Format (RTF 1.9.1) documents through the Quillwright document model.

GitHub repositories

This package is not used by any popular GitHub repositories.

Version Downloads Last Updated
0.2.4 128 8/10/2026
0.2.3 123 8/9/2026
0.2.2 157 8/1/2026