TPTruPDF

Compatibility

What TruPDF reads, writes, and renders without loss.

Document formats

FormatRenderEdit (Phase 5+)Save back
PDF 1.4 – 2.0
Encrypted PDF✅ (after unlock)
Linearized PDF
PDF/A-1, A-2, A-3⚠ (validation not enforced post-save)
Signed PDF✅ (badge + verify)append-only✅ (incremental update)
3D PDF (U3D / PRC)poster only

Non-PDF inputs route through the TruPDF conversion engine:

FormatRoute
Office — DOC(X/M), XLS(X/M/B), PPT(X/M), ODT/ODS/ODP, RTF, Pages/Numbers/Keynote, CSV/TSV, Visio, Publisher, EPUBOffice pipeline
HTML, XHTML, HTMHTML render pipeline
Images — PNG, APNG, JPG/JPEG, GIF, BMP, SVG, WebP, AVIF, ICOImage pipeline
Extended raster — TIFF, HEIC, camera rawRaster pipeline
Text & code — TXT, Markdown/MDX, JSON, XML, YAML, TOML, source code (JS/TS, Python, Java, Go, Rust, SQL, …)Text pipeline
Email — EML, MSGEmail pipeline
XPS, OXPSXPS pipeline
XOD (legacy WebViewer XOD archives)XOD pipeline
2D CAD — DXF, DWG (R12–R2018, incl. CTB plot styles), DWF, DWFx, DGNthe TruCAD engine (TruenoTech's clean-room CAD engine, deployed as a sidecar)

RVT / RFA (3D BIM) is not supported — uploads are rejected with a typed, actionable error. Without the conversion service, the viewer handles PDF plus browser-native image formats client-side.

Annotations (XFDF)

TruPDF round-trips XFDF with Acrobat-spec conformance. Saved annotations render identically in Acrobat, Chrome, Firefox, Edge, and Apple Preview.

Supported types:

  • Text markup — highlight, underline, strikethrough, squiggly, caret.
  • Free text — sticky note, freetext, callout, typewriter.
  • Shapes — rectangle, ellipse, polygon, polyline, line, arrow, arc, cloud (with /BE cloud border).
  • Ink / handwritten — ink, pencil, freehand-highlight, handwritten-signature.
  • Stamps — rubber-stamp (Approved / Draft / Urgent / …), image- stamp, date-stamp.
  • File / media — file-attachment (icon: Graph / Paperclip / PushPin / Tag), sound.
  • Measurement — distance, perimeter, area, rectangle-area, ellipse-area, arc-measurement, count. Calibration units preserved.
  • Redactionredaction-mark (Phase 8 burn-pending).
  • Other — link, image, watermark, reply (threading via inReplyTo).
  • Form widgets — signature-field, form-text, form-checkbox, form-radio, form-combobox, form-listbox, form-signature.

Common fields preserved: id, page, rect, color, fillColor, strokeWidth, dashArray, opacity, author, contents (rich text), createdAt, modifiedAt, locked, hidden, noPrint, subject, status, inReplyTo, customData.

XFDF + AcroForm round-trip is a CI gate. Failing cases live in packages/annotations/src/__tests__/XFDFRoundTrip.test.ts.

Forms

TypeReadWriteNotes
AcroForm textSingle + multi-line, regex pattern
AcroForm checkbox
AcroForm radioMutually exclusive groups
AcroForm choiceCombo + listbox
AcroForm pushbuttonAction triggers
AcroForm signatureSee Signatures
Static XFA✅ (after unlockStaticXFA)XFA datasets serialized on save
Dynamic XFA⚠ best-effort renderReject dynamic-flow markers
FDF dataLegacy systems
XFDF dataPreferred wire format

Sandboxed JS calculation engine recognises a small set of named built-ins (AFSimple_Calculate, AFRange_Validate). No eval, no new Function. Unknown scripts emit a ValidationIssue and never execute.

Digital signatures

  • Sign — PKCS#7 detached, via the signing pipeline.
  • Algorithms — RSA-2048 / 4096, ECDSA P-256 / P-384 / P-521.
  • Hashes — SHA-256 / SHA-384 / SHA-512 (with RSA-PSS padding).
  • Verify — byte-range integrity, chain validation against host- supplied trust anchors, optional OCSP / CRL fetchers, time-stamp token recognition, LTV flagging.
  • Multi-signature — append without invalidating prior signatures (incremental updates).

3D

3D annotations (U3D / PRC, detected via the embedded 3D stream) render a poster preview via @trupdf/threed. Interactive 3D manipulation is out of scope; the license feature id is threed.

Browser matrix

BrowserStandard modeSecure modeNotes
Chrome 110+Recommended
Edge 110+Chromium engine
Firefox 110+
Safari 16+iPadOS supported
Mobile SafariTouch + Apple Pencil
Android ChromeS Pen via PointerEvents

The render worker is bundled as an ES module inside the package — no globals, no separate hosting.

Mobile / stylus

  • Pinch zoom, two-finger rotate, swipe, long-press.
  • Apple Pencil via PointerEvents (pressure, tilt, twist).
  • Wacom tablets via PointerEvents.
  • S Pen via PointerEvents.
  • Palm rejection on, configurable pressure curves (soft / linear / firm).
  • Coalesced pointer events for low-latency ink rendering.

Accessibility

  • WCAG 2.2 AA target.
  • Keyboard navigation through all controls.
  • Live region announcements for page change, annotation updates, form validation, tool activation.
  • Screen-reader friendly text layer in standard mode; structural reading order in secure mode.
  • Focus trap in modals, focus restoration on close.
  • Skip links, visible focus indicators.

Internationalization

  • 31 locales out of the box (English source).
  • RTL support for Arabic, Hebrew, Farsi.
  • Locale switched at runtime via changeLanguage().
  • Missing keys fall back to English.
  • Hosts can register custom translations or override strings.

What's intentionally out of scope

  • Interactive 3D (U3D / PRC) — poster image only.
  • Video playback inside PDFs.
  • AcroForm scripting beyond the recognised built-ins (security).
  • Dynamic XFA write-back (read + best-effort render only).
  • RVT / RFA (3D BIM) — rejected with a typed, actionable error; 2D CAD (DXF, DWG, DWF, DWFx, DGN) is supported via the TruCAD engine.