Skip to content

Releases: embedpdf/embed-pdf-viewer

Release v2.14.2

30 Apr 08:50
3f061ba

Choose a tag to compare

@embedpdf/[email protected]

Patch Changes

  • #607 by @bobsingor – Add fonts configuration to the snippet viewer for controlling external webfont loading. Both defaults remain unchanged (Open Sans for the UI chrome, Caveat / Dancing Script / Great Vibes / Pacifico for the Create Signature "Type" tab), but integrators can now opt out cleanly for GDPR-sensitive, airgapped, or self-hosted deployments.

    • fonts.ui: controls the snippet UI font. null skips the <link> (falls back to the system font stack); an object with family and/or stylesheetUrl lets you change the viewer font family independently from the stylesheet source, with omitted stylesheetUrl treated as no managed <link>.
    • fonts.signature: controls the signature "Type" tab fonts. null skips the <link> and hides the "Type" tab; an object with stylesheetUrl and/or fonts lets you self-host the stylesheet and override the font list.

    Both stylesheets are now registered at document scope with deduped <link rel="stylesheet"> elements so @font-face works consistently across browsers and typed signatures can render correctly to canvas. Existing matching stylesheet links are reused when possible.

  • #607 by @bobsingor – Prevent the zoom percentage % symbol in the custom zoom toolbar from wrapping to a new line when the toolbar is resized to a narrow width. The input and % are now rendered as a single non-wrapping flex group that clips overflow instead of breaking the layout.

@embedpdf/[email protected]

@embedpdf/[email protected]

@embedpdf/[email protected]

@embedpdf/[email protected]

@embedpdf/[email protected]

@embedpdf/[email protected]

@embedpdf/[email protected]

@embedpdf/[email protected]

@embedpdf/[email protected]

@embedpdf/[email protected]

@embedpdf/[email protected]

@embedpdf/[email protected]

@embedpdf/[email protected]

@embedpdf/[email protected]

@embedpdf/[email protected]

@embedpdf/[email protected]

@embedpdf/[email protected]

@embedpdf/[email protected]

@embedpdf/[email protected]

@embedpdf/[email protected]

@embedpdf/[email protected]

@embedpdf/[email protected]

@embedpdf/[email protected]

@embedpdf/[email protected]

@embedpdf/[email protected]

@embedpdf/[email protected]

@embedpdf/[email protected]

@embedpdf/[email protected]

@embedpdf/[email protected]

@embedpdf/[email protected]

@embedpdf/[email protected]

@embedpdf/[email protected]

@embedpdf/[email protected]

@embedpdf/[email protected]

@embedpdf/[email protected]

@embedpdf/[email protected]

@embedpdf/[email protected]

Release v2.14.1

22 Apr 07:38
43f5a2b

Choose a tag to compare

@embedpdf/[email protected]

Patch Changes

  • #601 by @bobsingor – Add PdfAnnotationFlags.LOCKED_CONTENTS (1 << 9) and map it to the 'lockedContents' PdfAnnotationFlagName, extending flag parsing helpers (flagsToNames, namesToFlags) accordingly.

@embedpdf/[email protected]

Patch Changes

  • #601 by @bobsingor – Add PDF LOCKED_CONTENTS flag handling and granular lock helpers (hasNoViewFlag, hasHiddenFlag, hasReadOnlyFlag, hasLockedContentsFlag). Expose isAnnotationInteractive, isAnnotationStructurallyLocked, isAnnotationContentLocked, and isAnnotationSelectable on the plugin API. Update annotation rendering across React/Preact, Svelte, and Vue to skip noView/hidden annotations and gate interactions using the new predicates. Thread structurallyLocked and contentLocked through the selection menu context on all three stacks so custom menus can disable structural or content edits without re-reading flag arrays.

@embedpdf/[email protected]

Patch Changes

  • #601 by @bobsingor – Align annotation fill-mode toolbar commands with plugin-configured default lock state via getDefaultAnnotationLock, and swap unlock vs form-only lock behavior so defaults match the intended modes. Re-export LockModeType from the snippet’s public embedpdf entry for consumers.

  • #598 by @ngivanyh – Add Traditional Chinese (zh-TW) locale strings to the snippet viewer, register them in the default translation bundle, and expose zh-TW in the CJK language group of the UI schema so users can select 繁體中文 in the viewer.

@embedpdf/[email protected]

@embedpdf/[email protected]

@embedpdf/[email protected]

@embedpdf/[email protected]

@embedpdf/[email protected]

@embedpdf/[email protected]

@embedpdf/[email protected]

@embedpdf/[email protected]

@embedpdf/[email protected]

@embedpdf/[email protected]

@embedpdf/[email protected]

@embedpdf/[email protected]

@embedpdf/[email protected]

@embedpdf/[email protected]

@embedpdf/[email protected]

@embedpdf/[email protected]

@embedpdf/[email protected]

@embedpdf/[email protected]

@embedpdf/[email protected]

@embedpdf/[email protected]

@embedpdf/[email protected]

@embedpdf/[email protected]

@embedpdf/[email protected]

@embedpdf/[email protected]

@embedpdf/[email protected]

@embedpdf/[email protected]

@embedpdf/[email protected]

@embedpdf/[email protected]

@embedpdf/[email protected]

@embedpdf/[email protected]

@embedpdf/[email protected]

@embedpdf/[email protected]

@embedpdf/[email protected]

@embedpdf/[email protected]

@embedpdf/[email protected]

Release v2.14.0

05 Apr 19:52
daca85e

Choose a tag to compare

@embedpdf/[email protected]

Minor Changes

  • #581 by @bobsingor – Support callout free text in the PDFium executor: read/write /CL, /LE, /IT, stroke width and colors, /TextColor, and remap rectangle differences (/RD) between native PDFium order and the model shape.

@embedpdf/[email protected]

Minor Changes

  • #581 by @bobsingor – Extend free text annotation typing for callouts: add PdfAnnotationColorType.TextColor and optional calloutLine, lineEnding, strokeWidth, and strokeColor on PdfFreeTextAnnoObject.

@embedpdf/[email protected]

Minor Changes

  • #581 by @bobsingor – Expose EmbedPDF callout line helpers in the WASM bindings (EPDFAnnot_GetCalloutLineCount, EPDFAnnot_GetCalloutLine, EPDFAnnot_SetCalloutLine) and refresh bundled pdfium.js / pdfium.cjs / pdfium.wasm.

@embedpdf/[email protected]

Minor Changes

  • #581 by @bobsingor – Add callout free text (FreeTextCallout): creation handler and preview data, vertex config and patch pipeline, default freeTextCallout tool, and built-in renderers for React, Vue, and Svelte (including preview components and shared calloutVertexConfig).

@embedpdf/[email protected]

Minor Changes

  • #581 by @bobsingor – Wire callout into the snippet viewer: callout icon, annotation:add-callout command, annotation toolbar and overflow menu entries, translations, and sidebar property schema for freeTextCallout (including opaque stroke color control).

@embedpdf/[email protected]

@embedpdf/[email protected]

@embedpdf/[email protected]

@embedpdf/[email protected]

@embedpdf/[email protected]

@embedpdf/[email protected]

@embedpdf/[email protected]

@embedpdf/[email protected]

@embedpdf/[email protected]

@embedpdf/[email protected]

@embedpdf/[email protected]

@embedpdf/[email protected]

@embedpdf/[email protected]

@embedpdf/[email protected]

@embedpdf/[email protected]

@embedpdf/[email protected]

@embedpdf/[email protected]

@embedpdf/[email protected]

@embedpdf/[email protected]

@embedpdf/[email protected]

@embedpdf/[email protected]

@embedpdf/[email protected]

@embedpdf/[email protected]

@embedpdf/[email protected]

@embedpdf/[email protected]

@embedpdf/[email protected]

@embedpdf/[email protected]

@embedpdf/[email protected]

@embedpdf/[email protected]

@embedpdf/[email protected]

@embedpdf/[email protected]

@embedpdf/[email protected]

@embedpdf/[email protected]

Release v2.13.0

03 Apr 20:48
f335f28

Choose a tag to compare

@embedpdf/[email protected]

Minor Changes

  • #579 by @bobsingor – Add the Signature plugin: reusable signature and initials entries, draw/type/upload pads, placement as ink or stamp annotations, and framework bindings for React, Vue, Preact, and Svelte.

@embedpdf/[email protected]

Patch Changes

  • #579 by @bobsingor – Re-export patching utilities from ./patching so dependent plugins (for example signature placement) can reuse the shared patch helpers.

@embedpdf/[email protected]

Patch Changes

  • #579 by @bobsingor – Register the Signature plugin in the snippet viewer, add a create-signature modal and wire the signature sidebar to real entries, placement, and translations.

@embedpdf/[email protected]

@embedpdf/[email protected]

@embedpdf/[email protected]

@embedpdf/[email protected]

@embedpdf/[email protected]

@embedpdf/[email protected]

@embedpdf/[email protected]

@embedpdf/[email protected]

@embedpdf/[email protected]

@embedpdf/[email protected]

@embedpdf/[email protected]

@embedpdf/[email protected]

@embedpdf/[email protected]

@embedpdf/[email protected]

@embedpdf/[email protected]

@embedpdf/[email protected]

@embedpdf/[email protected]

@embedpdf/[email protected]

@embedpdf/[email protected]

@embedpdf/[email protected]

@embedpdf/[email protected]

@embedpdf/[email protected]

@embedpdf/[email protected]

@embedpdf/[email protected]

@embedpdf/[email protected]

@embedpdf/[email protected]

@embedpdf/[email protected]

@embedpdf/[email protected]

@embedpdf/[email protected]

@embedpdf/[email protected]

@embedpdf/[email protected]

@embedpdf/[email protected]

@embedpdf/[email protected]

@embedpdf/[email protected]

@embedpdf/[email protected]

Release v2.12.1

01 Apr 15:44
0cbe930

Choose a tag to compare

@embedpdf/[email protected]

Patch Changes

  • #571 by @bobsingor – Add getAnnotations(options?) method to retrieve all tracked annotations, optionally filtered by page index. Available on both AnnotationCapability and AnnotationScope.

@embedpdf/[email protected]

Patch Changes

  • #571 by @bobsingor – Export missing annotation types from the snippet package: AnnotationTransferItem, ExportAnnotationsOptions, GetAnnotationsOptions, TrackedAnnotation, AnnotationTool, PdfAnnotationSubtype, and PdfStampAnnoObject.

@embedpdf/[email protected]

@embedpdf/[email protected]

@embedpdf/[email protected]

@embedpdf/[email protected]

@embedpdf/[email protected]

@embedpdf/[email protected]

@embedpdf/[email protected]

@embedpdf/[email protected]

@embedpdf/[email protected]

@embedpdf/[email protected]

@embedpdf/[email protected]

@embedpdf/[email protected]

@embedpdf/[email protected]

@embedpdf/[email protected]

@embedpdf/[email protected]

@embedpdf/[email protected]

@embedpdf/[email protected]

@embedpdf/[email protected]

@embedpdf/[email protected]

@embedpdf/[email protected]

@embedpdf/[email protected]

@embedpdf/[email protected]

@embedpdf/[email protected]

@embedpdf/[email protected]

@embedpdf/[email protected]

@embedpdf/[email protected]

@embedpdf/[email protected]

@embedpdf/[email protected]

@embedpdf/[email protected]

@embedpdf/[email protected]

@embedpdf/[email protected]

@embedpdf/[email protected]

@embedpdf/[email protected]

@embedpdf/[email protected]

@embedpdf/[email protected]

Release v2.12.0

01 Apr 12:34
4db4e77

Choose a tag to compare

@embedpdf/[email protected]

Minor Changes

  • #569 by @bobsingor – Add symmetric annotation import/export API using a unified AnnotationTransferItem type. exportAnnotations() produces the same format that importAnnotations() consumes — zero remapping needed for round-tripping. Stamp appearances are automatically exported as PDF buffers in ctx.data. On import, stamps can be created from PNG, JPEG, or PDF buffers via ctx: { data: ArrayBuffer } — the engine auto-detects the format from magic bytes. Also adds deleteAllAnnotations() convenience method.

@embedpdf/[email protected]

@embedpdf/[email protected]

@embedpdf/[email protected]

@embedpdf/[email protected]

@embedpdf/[email protected]

@embedpdf/[email protected]

@embedpdf/[email protected]

@embedpdf/[email protected]

@embedpdf/[email protected]

@embedpdf/[email protected]

@embedpdf/[email protected]

@embedpdf/[email protected]

@embedpdf/[email protected]

@embedpdf/[email protected]

@embedpdf/[email protected]

@embedpdf/[email protected]

@embedpdf/[email protected]

@embedpdf/[email protected]

@embedpdf/[email protected]

@embedpdf/[email protected]

@embedpdf/[email protected]

@embedpdf/[email protected]

@embedpdf/[email protected]

@embedpdf/[email protected]

@embedpdf/[email protected]

@embedpdf/[email protected]

@embedpdf/[email protected]

@embedpdf/[email protected]

@embedpdf/[email protected]

@embedpdf/[email protected]

@embedpdf/[email protected]

@embedpdf/[email protected]

@embedpdf/[email protected]

@embedpdf/[email protected]

@embedpdf/[email protected]

@embedpdf/[email protected]

Release v2.11.1

31 Mar 15:12
ab15a0b

Choose a tag to compare

@embedpdf/[email protected]

Patch Changes

  • #557 by @jonashaag – Add BMP encoding support as an optional image format

    BMP encoding bypasses canvas.toBlob() entirely by prepending a 66-byte header to the raw RGBA pixel data. This eliminates the dominant rendering bottleneck — in benchmarks, encoding dropped from ~76ms average (PNG via canvas.toBlob) to <1ms, reducing total tile render time by ~60%.

    The BMP uses BI_BITFIELDS with channel masks matching PDFium's RGBA output byte order, so no per-pixel conversion is needed. Top-down row order avoids row flipping. The result is a valid BMP that all modern browsers decode natively in <img> elements.

    Users who want to opt into the faster BMP path can set defaultImageType: 'image/bmp' in the render plugin config, while PNG remains the default output format.

  • #566 by @bobsingor – Fix custom stamp annotations with imageSize so predefined image stamps render correctly while preserving the original embedded bitmap quality.

@embedpdf/[email protected]

Patch Changes

  • #557 by @jonashaag – Add BMP encoding support as an optional image format

    BMP encoding bypasses canvas.toBlob() entirely by prepending a 66-byte header to the raw RGBA pixel data. This eliminates the dominant rendering bottleneck — in benchmarks, encoding dropped from ~76ms average (PNG via canvas.toBlob) to <1ms, reducing total tile render time by ~60%.

    The BMP uses BI_BITFIELDS with channel masks matching PDFium's RGBA output byte order, so no per-pixel conversion is needed. Top-down row order avoids row flipping. The result is a valid BMP that all modern browsers decode natively in <img> elements.

    Users who want to opt into the faster BMP path can set defaultImageType: 'image/bmp' in the render plugin config, while PNG remains the default output format.

@embedpdf/[email protected]

Patch Changes

  • #566 by @bobsingor – Fix Vue and Svelte renderer registration typing so custom preview container styles build correctly.

@embedpdf/[email protected]

Patch Changes

  • #557 by @jonashaag – Add BMP encoding support as an optional image format

    BMP encoding bypasses canvas.toBlob() entirely by prepending a 66-byte header to the raw RGBA pixel data. This eliminates the dominant rendering bottleneck — in benchmarks, encoding dropped from ~76ms average (PNG via canvas.toBlob) to <1ms, reducing total tile render time by ~60%.

    The BMP uses BI_BITFIELDS with channel masks matching PDFium's RGBA output byte order, so no per-pixel conversion is needed. Top-down row order avoids row flipping. The result is a valid BMP that all modern browsers decode natively in <img> elements.

    Users who want to opt into the faster BMP path can set defaultImageType: 'image/bmp' in the render plugin config, while PNG remains the default output format.

@embedpdf/[email protected]

Patch Changes

  • #566 by @bobsingor – Disable the snippet rubber stamp insert command when the active document does not allow annotation modifications.

@embedpdf/[email protected]

@embedpdf/[email protected]

@embedpdf/[email protected]

@embedpdf/[email protected]

@embedpdf/[email protected]

@embedpdf/[email protected]

@embedpdf/[email protected]

@embedpdf/[email protected]

@embedpdf/[email protected]

@embedpdf/[email protected]

@embedpdf/[email protected]

@embedpdf/[email protected]

@embedpdf/[email protected]

@embedpdf/[email protected]

@embedpdf/[email protected]

@embedpdf/[email protected]

@embedpdf/[email protected]

@embedpdf/[email protected]

@embedpdf/[email protected]

@embedpdf/[email protected]

@embedpdf/[email protected]

@embedpdf/[email protected]

@embedpdf/[email protected]

@embedpdf/[email protected]

@embedpdf/[email protected]

@embedpdf/[email protected]

@embedpdf/[email protected]

@embedpdf/[email protected]

@embedpdf/[email protected]

@embedpdf/[email protected]

@embedpdf/[email protected]

@embedpdf/[email protected]

Release v2.11.0

30 Mar 21:57
ec085f7

Choose a tag to compare

@embedpdf/[email protected]

Minor Changes

  • #562 by @bobsingor – Implement new PDF manipulation and annotation appearance export methods: createDocument, importPages, deletePage, exportAnnotationAppearanceAsPdf, and exportAnnotationsAppearanceAsPdf.

@embedpdf/[email protected]

Minor Changes

  • #562 by @bobsingor – Add PdfAnnotationName enum (deprecating PdfAnnotationIcon). Extend PdfEngine and IPdfiumExecutor interfaces with new document manipulation capabilities (createDocument, importPages, deletePage) and annotation appearance export methods.

@embedpdf/[email protected]

Minor Changes

  • #562 by @bobsingor – Expose new PDFium functions for annotation appearance generation and export (EPDFAnnot_ExportAppearanceAsDocument, EPDFAnnot_ExportMultipleAppearancesAsDocument, EPDFAnnot_SetAppearanceFromPage, EPDFAnnot_GetName, EPDFAnnot_SetName).

@embedpdf/[email protected]

Minor Changes

  • #562 by @bobsingor – Add ToolContextMap to support typed context injection for active tools. Introduce preview renderers and bounding-box components for annotations (CirclePreview, SquarePreview, InkPreview, etc.) to support drag-to-create or stamp hover previews.

@embedpdf/[email protected]

Minor Changes

  • #562 by @bobsingor – Introduce @embedpdf/plugin-stamp for managing reusable rubber-stamp libraries. Includes features for loading built-in/manifest stamps, creating custom stamps from annotations, and exporting custom stamp libraries.

@embedpdf/[email protected]

Minor Changes

  • #562 by @bobsingor – Enhance sidebar API by allowing custom props to be passed via setActiveSidebar and toggleSidebar, enabling dynamic state injection into sidebar components.

@embedpdf/[email protected]

Minor Changes

  • #562 by @bobsingor – Integrate @embedpdf/plugin-stamp with the default viewer. Add the Rubber Stamp sidebar, Signature sidebar, and Insert tools to the default UI schema. Include standard stamp/insert translations.

@embedpdf/[email protected]

@embedpdf/[email protected]

@embedpdf/[email protected]

@embedpdf/[email protected]

@embedpdf/[email protected]

@embedpdf/[email protected]

@embedpdf/[email protected]

@embedpdf/[email protected]

@embedpdf/[email protected]

@embedpdf/[email protected]

@embedpdf/[email protected]

@embedpdf/[email protected]

@embedpdf/[email protected]

@embedpdf/[email protected]

@embedpdf/[email protected]

@embedpdf/[email protected]

@embedpdf/[email protected]

@embedpdf/[email protected]

@embedpdf/[email protected]

@embedpdf/[email protected]

@embedpdf/[email protected]

@embedpdf/[email protected]

@embedpdf/[email protected]

@embedpdf/[email protected]

@embedpdf/[email protected]

@embedpdf/[email protected]

@embedpdf/[email protected]

@embedpdf/[email protected]

@embedpdf/[email protected]

@embedpdf/[email protected]

Release v2.10.1

26 Mar 14:44

Choose a tag to compare

Automated release.

Release v2.10.0

24 Mar 20:44
6079301

Choose a tag to compare

@embedpdf/[email protected]

Minor Changes

  • #537 by @bobsingor
    • Add engine APIs for reading page widgets and form/document JavaScript actions, setting full widget state, renaming and sharing widget fields, and regenerating widget appearances.
    • Route the new widget and form operations through the PDFium and web worker layers to support form authoring and fill-mode workflows.

@embedpdf/[email protected]

Minor Changes

  • #537 by @bobsingor
    • Expand form and widget models with typed field unions, widget appearance/style metadata, export values, and JavaScript action types.
    • Add helper utilities and engine interface updates for widget discovery, field state updates, shared fields, and appearance regeneration.

@embedpdf/[email protected]

Minor Changes

  • #537 by @bobsingor
    • Add PDFium bindings and wasm exports for creating and editing form widgets, reading widget metadata and JavaScript actions, sharing fields, and regenerating widget appearance streams.
    • Improve form handle lifecycle management so widget reads, writes, and appearance generation work more reliably across repeated operations.

@embedpdf/[email protected]

Minor Changes

  • #537 by @bobsingor
    • Add annotation lock modes, scoped navigation/state events, richer tool metadata, and locked-mode renderer support so annotations can switch cleanly between authoring and fill interactions.
    • Add link previews and locked link navigation support plus shared React, Svelte, and Vue updates for the new renderer and interaction APIs.

@embedpdf/[email protected]

Minor Changes

  • #537 by @bobsingor
    • Add a new cross-framework form plugin with widget authoring tools, renderer registration, fill-mode components, state hooks, and widget appearance rendering.
    • Support text fields, checkboxes, radio buttons, combo boxes, and list boxes across React, Svelte, Vue, and Preact, including programmatic updates and shared field operations.

@embedpdf/[email protected]

Minor Changes

  • #537 by @bobsingor
    • Add full form authoring and fill-mode support to the snippet viewer, including new commands, toolbar items, translations, icons, and widget editing controls.
    • Wire form mode into the viewer schema and sidebars so widgets can be created, configured, filled, and previewed in the example app.

@embedpdf/[email protected]

Patch Changes

  • #537 by @bobsingor
    • Allow Tab and Shift+Tab keyboard handling to continue working inside form inputs so field navigation is not blocked.
    • Normalize spacebar shortcut parsing so commands can consistently match the space key.

@embedpdf/[email protected]

Patch Changes

  • #537 by @bobsingor
    • Update redaction tool integration to work with typed annotation tool definitions and the newer annotation capability access patterns.
    • Guard annotation capability usage during redaction flows and resolve defaults from the active tool configuration for more consistent behavior.

@embedpdf/[email protected]

@embedpdf/[email protected]

@embedpdf/[email protected]

@embedpdf/[email protected]

@embedpdf/[email protected]

@embedpdf/[email protected]

@embedpdf/[email protected]

@embedpdf/[email protected]

@embedpdf/[email protected]

@embedpdf/[email protected]

@embedpdf/[email protected]

@embedpdf/[email protected]

@embedpdf/[email protected]

@embedpdf/[email protected]

@embedpdf/[email protected]

@embedpdf/[email protected]

@embedpdf/[email protected]

@embedpdf/[email protected]

@embedpdf/[email protected]

@embedpdf/[email protected]

@embedpdf/[email protected]

@embedpdf/[email protected]

@embedpdf/[email protected]

@embedpdf/[email protected]

@embedpdf/[email protected]

@embedpdf/[email protected]

@embedpdf/[email protected]

@embedpdf/[email protected]