6.2.0

Graphify-Labs/graphify6.2.0Sep 26, 2026by hand-dot

Upgrading?

AI Summary

pdfme v6.2.0 adds image fit and alignment controls, SVG rotation, CMYK output, and Turkish UI support, along with numerous fixes.

Key Highlights

  • Image fit and alignment controls
  • SVG rotation support
  • CMYK output for SVG and barcodes
  • Turkish UI support
  • Barcodes as vectors in PDFs

New Features

  • Image fit and alignment controls (objectFit, objectPosition)
  • SVG rotation in Designer and PDFs
  • CMYK output for SVG and barcodes
  • Turkish UI localization
  • Barcodes as SVG vectors in PDFs

Full Release Notes

This release adds image fit and alignment controls, SVG rotation, CMYK output for SVG and barcodes, and Turkish UI support. It also fixes a large batch of long-standing rendering, Designer, and TypeScript issues.

## New

- **Image fit and alignment:** Image schemas support `objectFit` (`contain` / `cover`) and `objectPosition` (a 9-position grid, like CSS). Existing templates without these fields keep rendering as `contain` + `center center`. (#1630, closes #696)
- **SVG rotation:** SVG schemas can now be rotated in the Designer and in generated PDFs. (#1629)
- **CMYK for SVG and barcodes:** When `colorType: 'cmyk'` is set, SVG fills, strokes, and text, and barcode colors are written as CMYK. `PDFPage.drawSvg` accepts an optional color mapper. (#1627, #1628)
- **Barcodes as vectors:** Barcodes and QR codes are drawn into PDFs as SVG vectors instead of embedded PNG images, so they stay sharp at any zoom. UI previews are unchanged. (#1628, closes #460)
- **Designer `updateTemplate` target page:** `designer.updateTemplate(template, { page })` sets the active page after a programmatic update. Without the option, the current page is now preserved instead of jumping back to page 1. (#1625, closes #1235)
- **Turkish:** Add Turkish (`lang: 'tr'`) to the UI and playground. (#1609)

## Fixes

- **Page order in generated PDFs:** Each page's schemas are rendered in array order, and schemas that share a name on the same page are all rendered. (#1626)
- **Line breaks:** The Viewer and generated PDFs use the same line-wrapping rules (UAX #14), so text breaks at the same places on screen and in the PDF, including around quotes and colons. (#1615, closes #1115)
- **Thai and Lao:** Tone marks such as ไม้เอก (U+0E48) now render when a string starts with Latin or CJK characters. (#1614, closes #1347)
- **Image orientation:** JPEG/PNG EXIF orientation is applied before embedding, so photos are no longer upside down or sideways in PDFs. (#1617, closes #1183)
- **SVG text fonts:** Configured fonts are passed to SVG rendering, fixing WinAnsi encoding errors for non-Latin SVG text. (#1624, closes #1433)
- **Rotated rectangles:** Thick borders on rotated rectangles are placed the same in the PDF as in the UI, and no longer disappear at 90°. (#1622, closes #382)
- **Barcodes in Web Workers:** QR and barcode generation works in browser module Workers. (#1613, closes #702)
- **Read-only multi-variable text:** Renders the substituted text instead of the variable names. (#1611, closes #1345)
- **Read-only tables:** Use `input[schema.name]` when provided instead of always rendering the Designer sample data. (#1612, closes #1299)
- **Static schema:** Multi-variable text in `basePdf.staticSchema` no longer throws `Text block not found`, and static schema ids stay stable during a Designer session. (#1610, closes #1296)
- **Designer size:** Designer, Form, and Viewer no longer render at 0×0 when the container is off-screen or only partly visible. (#1607, closes #1606)
- **Zoom scrolling:** At high zoom, the viewer waits until the current page is mostly scrolled away before switching pages. (#1608, closes #1240)
- **Undo/redo on non-US keyboards:** Keep `hotkeys-js` at 4.0.4 or later so undo/redo is not swapped on layouts such as German QWERTZ. (#1621, closes #1465)
- **TypeScript ≤ 5.6:** Published typings use a named `PdfBytes` type, so `Template` inference no longer collapses to `unknown`. (#1623, closes #1021)
- **Options:** UI options are shallow-copied on construct and `updateOptions`, so later changes to the caller's object do not leak into the UI.
- **Website:** Landing page cards wrap correctly on narrow screens. (#1620, closes #929)

## Dependencies and tooling

- Update `@testing-library/jest-dom` to 7.0.1 and `brace-expansion` to 5.0.12.

## Upgrade notes

This release keeps the public API backward compatible, but some generated PDFs may look different:

- **Barcodes are vectors now.** The visual result is sharper, but the PDF no longer contains a PNG image for each barcode. If you post-process PDFs and look for barcode images, update that step. (#1628)
- **All same-name schemas on a page are rendered.** Previously only one of them was drawn. Rendering order now follows each page's `schemas` array. (#1626)
- **Line breaks may move.** Text in generated PDFs now wraps with the same rules as the Viewer, which can change where lines break and the height of dynamic content. (#1615)
- **Images with EXIF orientation are rotated correctly.** If you rotated such images manually to work around the old behavior, remove that workaround. (#1617)
- **Read-only tables and multi-variable text use input values** when they are provided, instead of the Designer sample content. (#1611, #1612)

**Full changelog:** https://github.com/pdfme/pdfme/compare/6.1.13...6.2.0

Related Repositories