pdf-to-img
Version:
📃📸 Converts PDFs to images in nodejs
33 lines (32 loc) • 1.33 kB
JavaScript
import { strict as invariant } from "node:assert";
import Canvas from "canvas";
export class NodeCanvasFactory {
/* eslint-disable class-methods-use-this */
create(width, height, transparent) {
invariant(width > 0 && height > 0, "Invalid canvas size");
const canvas = Canvas.createCanvas(width, height);
const context = canvas.getContext("2d", { alpha: transparent });
// ensure that the canvas background is transparent
if (transparent)
context.clearRect(0, 0, width, height);
return {
canvas,
context,
};
}
reset(canvasAndContext, width, height) {
invariant(canvasAndContext.canvas, "Canvas is not specified");
invariant(width > 0 && height > 0, "Invalid canvas size");
canvasAndContext.canvas.width = width;
canvasAndContext.canvas.height = height;
}
destroy(canvasAndContext) {
invariant(canvasAndContext.canvas, "Canvas is not specified");
// Zeroing the width and height cause Firefox to release graphics
// resources immediately, which can greatly reduce memory consumption.
canvasAndContext.canvas.width = 0;
canvasAndContext.canvas.height = 0;
canvasAndContext.canvas = null;
canvasAndContext.context = null;
}
}