---
title: "OneDocument notes"
url: https://recursiveai.org/onedocument/docs/docs-map/
description: "Normative notes on how OneDocument behaves, one page per area. The code's XML documentation states the details of each type; these pages state the rules…"
version: "1.0.0"
source: https://github.com/recursive-ai-oss/onedocument-csharp/blob/a85720e075c783fc596641d8586ee126cae088c5/docs/README.md
---

# OneDocument notes

Normative notes on how OneDocument behaves, one page per area. The code's XML documentation states the details of each type; these pages state the rules, the sources they come from and the deviations. Start with `contracts.md` and `defects.md`.

## Foundations

| Note | What it covers |
|---|---|
| [contracts.md](https://recursiveai.org/onedocument/docs/contracts/) | Shared contracts: byte sources, limits, defects and exceptions, the format registry, the part model, the untouched-part round-trip rule |
| [defects.md](https://recursiveai.org/onedocument/docs/defects/) | The defect catalogue: every `layer.problem` code, what it means and where it is located |
| [packaging.md](https://recursiveai.org/onedocument/docs/packaging/) | OPC packages, Flat OPC and compound files under every format |
| [markup.md](https://recursiveai.org/onedocument/docs/markup/) | The XML tokenizer, writer, lazy markup tree and reader |
| [platforms.md](https://recursiveai.org/onedocument/docs/platforms/) | NativeAOT, trimming and browser WebAssembly: what is checked and the known browser gaps |
| [encryption.md](https://recursiveai.org/onedocument/docs/encryption/) | Opening password-protected files; the supported schemes and what is written |
| [protection.md](https://recursiveai.org/onedocument/docs/protection/) | Editing restrictions and their passwords for the three kinds |
| [ole.md](https://recursiveai.org/onedocument/docs/ole/) | OLE property sets and embedded objects |
| [vba.md](https://recursiveai.org/onedocument/docs/vba/) | VBA projects as data: read, list, extract, remove; never run |
| [officeart.md](https://recursiveai.org/onedocument/docs/officeart/) | The OfficeArt reader the binary formats share |
| [number-formats.md](https://recursiveai.org/onedocument/docs/number-formats/) | Excel's number-format language and date serials, as a shared service |
| [text-extraction.md](https://recursiveai.org/onedocument/docs/text-extraction/) | Text extraction from OOXML packages |
| [accessibility.md](https://recursiveai.org/onedocument/docs/accessibility/) | Accessibility checking against Office's published rules |

## Word-processing documents

| Note | What it covers |
|---|---|
| [docx-styles-numbering.md](https://recursiveai.org/onedocument/docs/docx-styles-numbering/) | Style resolution and list labels |
| [authoring.md](https://recursiveai.org/onedocument/docs/authoring/) | Building content with the hub: styles by name, runs, links, pictures, tables, ranges, slides; sanitising in memory |
| [docx-tables-sections.md](https://recursiveai.org/onedocument/docs/docx-tables-sections/) | Tables, sections, headers and footers |
| [docx-fields-notes-comments.md](https://recursiveai.org/onedocument/docs/docx-fields-notes-comments/) | Fields, footnotes and endnotes, comments |
| [docx-content-controls.md](https://recursiveai.org/onedocument/docs/docx-content-controls/) | Content controls and custom XML binding |
| [docx-stories-properties.md](https://recursiveai.org/onedocument/docs/docx-stories-properties/) | Text boxes, stories, list labels, document properties |
| [revisions.md](https://recursiveai.org/onedocument/docs/revisions/) | Tracked changes: reading, authoring, accepting and rejecting |
| [doc.md](https://recursiveai.org/onedocument/docs/doc/) | Reading Word 97 to 2013, Word 6/95 and fast-saved binary files |
| [rtf.md](https://recursiveai.org/onedocument/docs/rtf/) | RTF 1.9.1 read and write, the group tree and the conversion |
| [xml-2003.md](https://recursiveai.org/onedocument/docs/xml-2003/) | Word 2003 XML and Excel 2003 XML (read-only conversion) |
| [html.md](https://recursiveai.org/onedocument/docs/html/) | HTML import (sanitised) and export |
| [markdown.md](https://recursiveai.org/onedocument/docs/markdown/) | CommonMark and GFM import and export |
| [odf.md](https://recursiveai.org/onedocument/docs/odf/) | OpenDocument package layer and text-document conversions |
| [odp.md](https://recursiveai.org/onedocument/docs/odp/) | OpenDocument presentations (ODP, OTP, FODP) read and write |

## Workbooks

| Note | What it covers |
|---|---|
| [spreadsheets.md](https://recursiveai.org/onedocument/docs/spreadsheets/) | The workbook hub and the cell store |
| [spreadsheets-styles.md](https://recursiveai.org/onedocument/docs/spreadsheets-styles/) | Styles, tables, conditional formatting, validation, names |
| [spreadsheets-streaming.md](https://recursiveai.org/onedocument/docs/spreadsheets-streaming/) | Forward-only row and cell cursors |
| [spreadsheets-poco.md](https://recursiveai.org/onedocument/docs/spreadsheets-poco/) | `Spreadsheet.Read<T>` and `Write<T>`: rows of plain objects |
| [spreadsheets-calc.md](https://recursiveai.org/onedocument/docs/spreadsheets-calc/) | Recalculation: dependency graph, levels, circular references, iteration, data tables, Goal Seek, external links |
| [spreadsheets-pivots.md](https://recursiveai.org/onedocument/docs/spreadsheets-pivots/) | Pivot caches and tables, refresh |
| [calc.md](https://recursiveai.org/onedocument/docs/calc/) | The formula tree, values, evaluator and function registry |
| [calc-functions.md](https://recursiveai.org/onedocument/docs/calc-functions/) | The function families and their documented behaviour |
| [csv.md](https://recursiveai.org/onedocument/docs/csv/) | CSV and TSV reader, writer and loss report |
| [xlsb.md](https://recursiveai.org/onedocument/docs/xlsb/) | Binary workbooks |
| [xls.md](https://recursiveai.org/onedocument/docs/xls/) | Legacy Excel workbooks, BIFF2 to BIFF8 read, BIFF8 write |

## Presentations

| Note | What it covers |
|---|---|
| [presentations.md](https://recursiveai.org/onedocument/docs/presentations/) | The presentation hub, inheritance, editing |
| [ppt.md](https://recursiveai.org/onedocument/docs/ppt/) | Reading PowerPoint 97-2003 files |

## Templating and operations

| Note | What it covers |
|---|---|
| [templating.md](https://recursiveai.org/onedocument/docs/templating/) | The template syntax, extensions to formula syntax, data sources, the binder contract |
| [templating-docx.md](https://recursiveai.org/onedocument/docs/templating-docx/) | The document template binder |
| [templating-xlsx.md](https://recursiveai.org/onedocument/docs/templating-xlsx/) | The workbook template binder |
| [templating-pptx.md](https://recursiveai.org/onedocument/docs/templating-pptx/) | The presentation template binder |
| [mail-merge.md](https://recursiveai.org/onedocument/docs/mail-merge/) | Word mail merge |
| [operations-merge.md](https://recursiveai.org/onedocument/docs/operations-merge/) | Merge, append, split and persisted field update |
| [operations-find-replace.md](https://recursiveai.org/onedocument/docs/operations-find-replace/) | Find and replace across runs, cells and paragraphs |
| [sanitize.md](https://recursiveai.org/onedocument/docs/sanitize/) | Inspecting a file for hidden data and personal information, and sanitising it |
| [redaction.md](https://recursiveai.org/onedocument/docs/redaction/) | True redaction by match or region, and its verification |
| [redaction-review.md](https://recursiveai.org/onedocument/docs/redaction-review/) | The project's own completeness review of redaction (not an external audit): method, defects found, verdict, open items |

## Rendering

| Note | What it covers |
|---|---|
| [layout.md](https://recursiveai.org/onedocument/docs/layout/) | The layout engine and paint contract; PDF and PNG output |
| [layout-tables.md](https://recursiveai.org/onedocument/docs/layout-tables/) | Tables in layout |
| [layout-floats.md](https://recursiveai.org/onedocument/docs/layout-floats/) | Floating objects and text wrap |
| [layout-fields.md](https://recursiveai.org/onedocument/docs/layout-fields/) | Fields that depend on pages; table of contents and indexes |
| [spreadsheet-rendering.md](https://recursiveai.org/onedocument/docs/spreadsheet-rendering/) | Printing workbooks: pages, cell text, objects |
| [presentation-rendering.md](https://recursiveai.org/onedocument/docs/presentation-rendering/) | Slides to PDF and PNG |
| [rendering-export.md](https://recursiveai.org/onedocument/docs/rendering-export/) | Pages as PNG, JPEG, TIFF, WebP and SVG: page ranges, size, the SVG writer and its checks |
| [drawingml-rendering.md](https://recursiveai.org/onedocument/docs/drawingml-rendering/) | Shapes, pictures, groups and effects |
| [charts.md](https://recursiveai.org/onedocument/docs/charts/) | Chart reading, layout and painting |
| [smartart.md](https://recursiveai.org/onedocument/docs/smartart/) | SmartArt: stored drawings and the layout engine |
| [math-layout.md](https://recursiveai.org/onedocument/docs/math-layout/) | Equations (Office Math) |
| [metafiles.md](https://recursiveai.org/onedocument/docs/metafiles/) | Drawing embedded EMF, EMF+ and WMF pictures |

## Coming from another library

[migration/](https://recursiveai.org/onedocument/docs/migration/) maps the common tasks of seven libraries to OneDocument.
