@nextgensoftwares/folio-render-canvas
Paints laid-out pages onto any Canvas 2D context: the browser's CanvasRenderingContext2D/OffscreenCanvas or a Node canvas (@nextgensoftwares/folio-render-node). DOM-free; page layers (watermarks) go into the same pixels as the text. Guide: Reader & protection.
ts
const { width, height } = pagePixelSize(page, 2);
await renderPage(ctx, page, { scale: 2, pageLayers, painters: composed.exporters.canvas, variables: { user } });Rendering
| Export | Description |
|---|---|
renderPage(ctx, page, options?) | background, layers under, fragments, header/footer, layers over, forensic mark; resolves when images are drawn |
pagePixelSize(page, scale?) | device-pixel size of a page at scale |
layerFragments(layer, page, options, warn?) | one layer's fragments for a page (a throwing layer gives []) |
drawFragment(ctx, fragment, page, env) | one fragment (line, marker, rect, media, math, custom); never throws |
drawLine, drawMarker, cssFont(font) | text runs at the layout's positions (justified words placed one by one); CSS font shorthand |
drawBox, roundRect | CSS-like boxes (fill, border inside, radius) |
drawMath, drawVectorMath | math as a vector drawing, an image, or the LaTeX source |
createEnv(options), type RenderEnv | resolved options (colour adapter, metrics, cached image loader, warnings) |
Forensic mark
| Export | Description |
|---|---|
forensicMark(ctx, width, height, payload, strength?) | faint dot pattern encoding 32 bits + 8 check bits, tiled over the page |
readForensicMark(pixels, scale) | recovers the payload from RGBA pixels, or null |
forensicPayload(text) | stable 32-bit payload (FNV-1a) from e.g. user:downloadId |
forensicBits(payload), FORENSIC_PITCH | the code bits; dot spacing in CSS px |
type PixelData | { data, width, height } (ImageData-like) |
Types
| Export | Description |
|---|---|
Canvas2D | the structural 2D-context subset drawn with |
CanvasRenderOptions | scale, background, color, metrics, images, math, path2d, painters, pageLayers, variables, totalPages, target, forensic, onWarning |
CanvasPainter, CanvasPaintContext | painters for custom fragments (FolioPlugin.exporters.canvas[type]) |
CanvasPageLayer | a page layer (structural) |
CanvasImage, LoadedImage | what drawImage takes, plus intrinsic size |
CanvasMathDrawing, CanvasMathResult | vector math (same shape as export-pdf's PdfMathDrawing) or an image |
ColorRole, MaybePromise | colour roles as in @nextgensoftwares/folio-editor; T | Promise<T> |