From 26a36487d4d02ab996960a0240f1561e9ae000fe Mon Sep 17 00:00:00 2001 From: Lucas Smith Date: Thu, 4 Dec 2025 11:19:44 +1100 Subject: [PATCH] fix: pass canvas context to napi-rs/canvas (#2276) --- packages/lib/server-only/ai/pdf-to-images.ts | 11 +++++++++-- 1 file changed, 9 insertions(+), 2 deletions(-) diff --git a/packages/lib/server-only/ai/pdf-to-images.ts b/packages/lib/server-only/ai/pdf-to-images.ts index 5fa7893bd..0b9824b0f 100644 --- a/packages/lib/server-only/ai/pdf-to-images.ts +++ b/packages/lib/server-only/ai/pdf-to-images.ts @@ -9,9 +9,9 @@ export type PdfToImagesOptions = { export const pdfToImages = async (pdfBytes: Uint8Array, options: PdfToImagesOptions = {}) => { const { scale = 2 } = options; - const pdf = await pdfjsLib.getDocument({ data: pdfBytes }).promise; + const pdf = await pdfjsLib.getDocument(pdfBytes).promise; - return await pMap( + const images = await pMap( Array.from({ length: pdf.numPages }), async (_, index) => { const pageNumber = index + 1; @@ -20,10 +20,13 @@ export const pdfToImages = async (pdfBytes: Uint8Array, options: PdfToImagesOpti const viewport = page.getViewport({ scale }); const canvas = createCanvas(viewport.width, viewport.height); + const canvasContext = canvas.getContext('2d'); await page.render({ // @ts-expect-error napi-rs/canvas satifies the requirements canvas, + // @ts-expect-error napi-rs/canvas satifies the requirements + canvasContext, viewport, }).promise; @@ -37,4 +40,8 @@ export const pdfToImages = async (pdfBytes: Uint8Array, options: PdfToImagesOpti }, { concurrency: 10 }, ); + + void pdf.destroy(); + + return images; };