JSPM

  • Created
  • Published
  • Downloads 13086
  • Score
    100M100P100Q149029F
  • License MIT

Pluggable runtime layer that abstracts over multiple PDF engines (PDF-ium, Web Workers, mocks, etc.) to provide a unified API for rendering, search, annotation, and other document-level operations in EmbedPDF.

Package Exports

  • @embedpdf/engines
  • @embedpdf/engines/converters
  • @embedpdf/engines/pdfium
  • @embedpdf/engines/pdfium-direct-engine
  • @embedpdf/engines/pdfium-worker-engine
  • @embedpdf/engines/preact
  • @embedpdf/engines/react
  • @embedpdf/engines/svelte
  • @embedpdf/engines/vue
  • @embedpdf/engines/worker

Readme

EmbedPDF logo

EmbedPDF

NPM version License Join the community on GitHub

@embedpdf/engines

Pluggable rendering engines for EmbedPDF. Ships with PdfiumEngine – a high‑level, promise‑first wrapper built on top of @embedpdf/pdfium.

Documentation

For complete guides, examples, and full API reference, visit:

Official Documentation

Why @embedpdf/engines?

  • High‑level abstraction – handles tasks, DPR scaling, annotation colour resolution, range/linearised loading.
  • Universal runtimes – works in browsers, Node, and serverless environments.
  • Typed & composable – 100 % TypeScript with generics for custom image pipelines.

Features

  • Open PDFs from ArrayBuffer or URL
  • Render full pages, arbitrary rectangles, thumbnails – all DPI‑aware
  • Text extraction, glyph geometry, word‑break‑aware search with context windows
  • Read / create / transform / delete annotations and form fields
  • Page ops: merge, extract, flatten, partial import
  • Attachments & digital‑signature introspection

Installation

npm install @embedpdf/engines @embedpdf/pdfium

Basic Usage

import { init } from '@embedpdf/pdfium';
import { PdfiumEngine } from '@embedpdf/engines/pdfium';

const pdfiumWasm =
  'https://cdn.jsdelivr.net/npm/@embedpdf/pdfium/dist/pdfium.wasm';

(async () => {
  const response = await fetch(pdfiumWasm);
  const wasmBinary = await response.arrayBuffer();
  // 1 – boot the low‑level WASM module
  const pdfium = await init({ wasmBinary });

  // 2 – create the high‑level engine
  const engine = new PdfiumEngine(pdfium);
  engine.initialize();

  // 3 – open & render
  const document = await engine
    .openDocumentUrl({ id: 'demo', url: '/demo.pdf' })
    .toPromise();
  const page0 = doc.pages[0];

  const blob = await engine.renderPage(doc, page0).toPromise();
})();

Learn More

Head over to our docs for:

  • Getting Started – initialise, render, destroy
  • Engine Interface – implement your own back‑end
  • Advanced Topics – workers, Node pipelines, Sharp image adapters

License

MIT – see the LICENSE file.