.docxWordprocessingMLStable
Word in the browser
Paginated the way Word paginates — by measuring, not by guessing.
Word stores a flow of paragraphs, not pages. Apertura measures the content as it is actually rendered and breaks pages accordingly, which is the only way a page number in a footer can be correct. Only the pages near the viewport stay in the DOM, so a thousand-page document opens as fast as a five-page one.
sample.docx
0 requests · nothing uploadedLoading the viewer…
format—statusidleopened in—rendered bythis browser
Everything below is parsed from the file, not approximated
Text and styles
Paragraphs and runs with the complete w:rPr and w:pPr property sets, and the six-layer style cascade: document defaults → table style → numbering → paragraph style chain → character style chain → direct formatting. Themes, including themeColor with tint and shade, and theme font slots.
Structure
Sections with independent page setup, multi-column layouts, headers and footers (default, first page, even pages), footnotes placed on the page that references them, endnotes, threaded comments, bookmarks, hyperlinks and content controls.
Tables
The full grid, gridSpan and vMerge merging, repeating header rows, cell margins and borders, and all thirteen conditional formatting blocks of a table style with correct precedence.
Lists
Abstract definitions and instances, per-instance level overrides and startOverride, multi-level %1.%2 patterns, lvlRestart, legal numbering, and the number formats: decimal, Roman, alphabetic including Cyrillic, ordinal, cardinal and ordinal text, Chicago marks, bullets. Numbers are computed and emitted as text, so they survive virtualisation, printing, selection and search.
Graphics
DrawingML pictures with cropping, rotation and flipping; anchored drawings with text wrapping; text boxes; legacy VML shapes; symbol fonts mapped to Unicode.
Fields and equations
PAGE, NUMPAGES, SECTIONPAGES and PAGEREF resolved after pagination; HYPERLINK with URL scheme validation; TOC rendered from its cached result. OMML equations converted to MathML: fractions, radicals, scripts, n-ary operators with correctly placed limits, delimiters, matrices, accents, functions.
Revisions
Insertions and deletions, shown as accepted by default or as markup on request.
What we get wrong, published rather than discovered
A viewer that claims perfection loses the deal the moment somebody drops in their worst file. This list is the alternative.
- Tab stops are approximated; explicit stop positions are not yet honoured.
- Text wrapping around anchored drawings uses CSS floats — close to Word’s wrap polygons, but not identical.
- East Asian numbering formats fall back to decimal.
- Embedded fonts are declared but not yet decrypted and installed.
- Encrypted documents are detected but cannot be opened.
Found another one?
Send the file. It joins the corpus, which is the difference between a fix and a fix that stays.
The viewer, and the parser on its own
The parser produces a model that knows nothing about CSS or the DOM, so the same call runs in Node for extraction, search and conversion.
import { DocumentViewer } from '@apertura/react';
<DocumentViewer file={file} fit="width" />;