Skip to main content

New Features

Engine-Native Charts

Five chart types rendered directly to PDF content streams — no SVG, no rasterization. BarChart, LineChart, PieChart, AreaChart, DotPlot.

Canvas Drawing

<Canvas draw={(ctx) => { ... }}> renders arbitrary vector graphics using a recording API that converts to PDF path operators.

Watermarks

<Watermark text="DRAFT"> renders rotated, semi-transparent text behind page content. Automatically repeated on every page.

1D Barcodes

<Barcode data="ABC-123" format="Code128"> renders vector barcodes. Supports Code128, Code39, EAN13, EAN8, Codabar.

Embedded Data

renderDocument(element, { embedData }) attaches JSON to the PDF as a compressed file attachment. extractData(pdfBytes) reads it back.

Browser Entry Point

@formepdf/core/browser — same API, zero Node dependencies. WASM loaded via fetch(), decompression via DecompressionStream.

PDF/UA-1 Accessibility

<Document pdfUa> generates structure tree, tab order, role map, and XMP metadata for PDF/UA-1 compliance.

PDF/A Archival

<Document pdfa="2b"> for PDF/A-2b and PDF/A-2a long-term preservation compliance.

Digital Signatures

PKCS#7 detached signatures with X.509 certificates. Certify at render time or standalone via API.

AcroForms

TextField, Checkbox, Dropdown, RadioButton — native PDF form fields with flatten support.

Text Overflow

textOverflow: 'ellipsis' and textOverflow: 'clip' for single-line text truncation.

Font Fallback Chains

fontFamily: "Inter, NotoSansArabic, NotoSansSC" with per-character fallback resolution.

Overflow Hidden

overflow: 'hidden' clips children to parent bounds via PDF clip path operators.

QR Codes

<QrCode data="https://example.com"> renders vector QR codes directly to PDF.

Tailwind CSS

tw("p-4 text-lg font-bold") converts Tailwind classes to Forme style objects.

CSS Grid

Track sizing, explicit and auto placement, repeat() syntax.

BiDi Text

Automatic direction detection for Arabic, Hebrew, and mixed LTR/RTL paragraphs.

Hyphenation

35+ languages via hypher dictionaries. Integrated with Knuth-Plass line breaking.

Bug Fixes

  • Justified text word spacing uses natural glyph advances (not Knuth-Plass adjusted widths)
  • Shaping cluster byte-to-char conversion for multi-byte characters
  • Standard font /Widths arrays in PDF font dictionaries
  • Cross-axis stretch propagation for flex children with alignItems: stretch
  • measure_intrinsic_width accounts for textTransform: 'uppercase'