Skip to content

Allow access to canvas factory #46

@13thirteen

Description

@13thirteen

Describe the feature

Suggestion:

Expose createIsomorphicCanvasFactory as a public function, i.e. export the function and re-export it in index.ts.

Existing Code:

renderPageAsImage uses internal function createIsomorphicCanvasFactory to create a canvas and render the page on it.

Use Case:

Very similar to renderPageAsImage, but access raw pixel data of the rendered canvas with CanvasRenderingContext2D.getImageData().

For example something along these lines:

import { createIsomorphicCanvasFactory, getDocumentProxy } from 'unpdf';

const CanvasFactory = await createIsomorphicCanvasFactory(() => import('@napi-rs/canvas'));
const pdf = await getDocumentProxy(data, { CanvasFactory });

const page = await pdf.getPage(pageNumber);
const viewport = page.getViewport({ scale });
const canvasAndContext = pdf.canvasFactory.create(viewport.width, viewport.height);
await page.render({
  canvas: canvasAndContext.canvas as HTMLCanvasElement,
  canvasContext: canvasAndContext.context as CanvasRenderingContext2D,
  viewport,
}).promise;

const imageData = canvasAndContext.context.getImageData(x, y, w, h);

Additional information

  • Would you be willing to help implement this feature?

Metadata

Metadata

Assignees

No one assigned

    Labels

    enhancementNew feature or request

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions