From the spec
Built directly from ECMA-376 (OOXML) and ISO 32000 / 19005 (PDF / PDF/A) — not a wrapper around LibreOffice, headless Office, or any commercial SDK. Existing implementations are read as a reference, never a dependency.
From the spec
Built directly from ECMA-376 (OOXML) and ISO 32000 / 19005 (PDF / PDF/A) — not a wrapper around LibreOffice, headless Office, or any commercial SDK. Existing implementations are read as a reference, never a dependency.
Browser-first
Pure TypeScript working on Uint8Array in and Uint8Array out — zero node:*
imports on the conversion path. The same code runs unchanged in the browser, Node.js,
serverless and edge runtimes. You supply the fonts (or let it fetch open substitutes).
Word & Excel
WordprocessingML — text, styles, tables, lists, sections, headers/footers, images, tracked changes. SpreadsheetML — grids, number formats, dates, and the full print model. Plus DrawingML shapes, charts and OfficeMath.
Real typography
Type0 + CIDFontType2 embedding with subsetting, Knuth–Plass line breaking, Liang hyphenation, OpenType ligatures and kerning, BiDi (UAX #9) and Arabic cursive joining.
Compliant PDF
PDF/A-1, -2 and -3 (levels a / b / u) — all formally veraPDF-validated — plus tagged PDF (logical structure, alt text) and digital signatures (PKCS#7 detached, ECDSA).
One parse, any target
Ream.parse(bytes) reads a document once into a format-neutral interlayer;
convert('pdf') and convert('svg') render from it. New formats plug in as
reader/writer adapters — more are on the way.