Support matrix
Apex renders a documented DOCX profile. Features common in Word are not assumed to be supported. A row is marked complete only when parser, layout, fixtures, and PDF output agree.
- Supported
- 5
- Limited
- 17
- Unsupported
- 5
- Planned
- 1
Compatibility coverage
Use this matrix when designing templates. Treat diagnostics as part of the rendering contract—a successful PDF does not imply full Word fidelity.
Showing 28 of 28 support entries.
DOCX package validation
SupportedValidates ZIP structure, paths, limits, XML, relationship roots, external relationships, and the root office-document relationship; unconditionally rejects VBA/macros, OLE/embedded objects, ActiveX, attached packages/executables, custom UI, web extensions, and alternative-format chunks.
Main-document paragraphs
SupportedPreserves supported paragraphs and runs in source order across one or more sections. Missing page geometry falls back to A4-profile defaults.
Styles and paragraph formatting
Supported with limitsResolves docDefaults, default paragraph/character styles, basedOn, direct formatting, indents, alignment, spacing, keep controls, widow/orphan control, and page-break-before.
Explicit left tab stops
Supported with limitsWord tabs require explicit resolved paragraph stops with positive integer-twip positions, left/start alignment, and no leader. Duplicate, clear, non-left, leader, missing-next-stop, and default-tab behavior are rejected rather than approximated.
DOCX numbering and list layout
Supported with limitsRelationship-owned definitions and overrides, supported formats and restarts, searchable source-linked labels, indentation and wrapping, and deterministic counters.
Registered fonts and embedded text
Supported with limitsThe library accepts explicit TrueType bytes for LTR Latin shaping and deterministically rewrites the used glyphs into mapped fontkit subsets. The playground self-hosts five application-owned, hash-pinned OFL TrueType families, maps familiar system names deterministically, and never executes uploaded embedded fonts. Output is searchable upright Type0/CIDFontType2 text.
Template values and formatters
Supported with limitsTyped dotted paths plus upper, lower, currency:"ISO", and bounded date/time patterns. Date defaults to dd-MM-yyyy; explicit time tokens include 24-hour or 12-hour time using explicit locale and time-zone context.
Conditions and loops
Supported with limitsNested whole-paragraph and whole-table-row if / optional else / each blocks, with item-relative object fields and cumulative limits.
Fixed-grid tables
Supported with limitsPositive integer-twip tblGrid, explicit tblW/tcW, supported margins, borders, shading, heights, alignment, spans, merges, repeated headers, and deterministic fragmentation.
Static inline images
Supported with limitsInternal relationship-owned PNG/JPEG parts with explicit positive DrawingML extents. Supported in ordinary paragraphs, bounded table cells, headers, and footers.
Image resource limits
SupportedDefaults cover distinct parts, total bytes, pixels per side, pixels per image, chunks/markers, and decoded working bytes.
PNG profile
Supported with limitsNon-interlaced legal grayscale/RGB/indexed/gray-alpha/RGBA depths, validated CRC/order/palette/transparency/scanlines/filters, normalized to 8-bit gray/RGB plus optional alpha.
JPEG profile
Supported with limitsWell-formed 8-bit baseline or bounded progressive grayscale/three-component JPEG with validated scans, orientation 1, and unambiguous JFIF/Adobe transform.
PDF image output
SupportedDeterministic content deduplication, per-page XObject resources, DCTDecode JPEG, FlateDecode PNG planes, optional grayscale alpha SMask, and source-linked placements.
Multiple sections
Supported with limitsParagraph and final body section properties create ordered nextPage sections. Positive portrait/landscape geometry maps to per-page PDF MediaBox values.
Default headers and footers
Supported with limitsInternal default references inherit across sections until replaced. Exact edge-relative distances default to 720 twips and must fit inside body margins.
Header/footer templates
Supported with limitsReusable definitions support paragraph values, safe formatters, bounded whole-paragraph blocks, static images, and page fields. Automatic paragraph numbering is unsupported.
PAGE and NUMPAGES
Supported with limitsSimple or complete complex fields with decimal/no-op switches only. Layout reserves digit width, paginates globally, then materializes current and total values.
Determinism and source links
Supported with limitsStable semantic and display IDs, source-ordered collections, deterministic resource ordering, searchable page text, byte-repeatable PDFs, and optional source-linked traces. The checked-in golden matches in separate Bun processes, Node 24, and a real Chromium module worker.
Binary-safe testkit
Supported for workspace PDFsValidates classic xref offsets, direct stream lengths, page image resources, upright text transforms, and per-page searchable text for workspace PDFs. Not a general PDF parser.
Dynamic image tags
Supported with limitsCanonical {{@image path}} values accept explicit PNG/JPEG bytes, pixel dimensions, physical twip bounds, optional aspect preservation, and semantic alt text. URLs and non-canonical image tags are rejected; PDFs remain untagged.
Floating, cropped, or transformed images
UnsupportedAnchors, floating placement, crop, rotation, and other DrawingML transformations are outside the profile.
SVG and broad image conversion
UnsupportedSVG, CMYK/YCCK, ICC conversion, arbitrary PNG/JPEG profiles, and general color management are not implemented.
Other section and header variants
UnsupportedContinuous, odd-page, and even-page breaks; first/even headers and footers; automatic header/footer numbering; and arbitrary Word fields are unavailable.
Other table features
UnsupportedPercentage widths, nested tables, styles/themes/conditional regions, complex shading, and complete Word autofit are unavailable.
Other text and font features
UnsupportedDefault or non-left tab behavior, tab leaders, complex scripts/bidi, CFF PDF embedding, variable-axis instantiation, and interrupting synchronous subsetting mid-encode are unavailable.
Opt-in Convex persistence
Supported with limitsThe configured playground mounts tested anonymous-session storage, upload-intent registration/cleanup, metadata, cache, realtime, and deletion adapters behind an explicit disabled-by-default control. This is demo isolation, not production authentication.
Hosted deployment
PlannedNo production Vercel deployment, production Convex authorization, canonical hosted playground, or operational readiness claim has been verified.