import { getDocument,GlobalWorkerOptions } from 'pdfjs-dist' import workerUrl from 'pdfjs-dist/build/pdf.worker.min.mjs?url' GlobalWorkerOptions.workerSrc=workerUrl declare global { interface Window {renderPdf:(base64:string,dpi:number)=>Promise} } window.renderPdf=async(base64,dpi)=>{ const data=Uint8Array.from(atob(base64),v=>v.charCodeAt(0)) const doc=await getDocument({data}).promise try{ const page=await doc.getPage(1),viewport=page.getViewport({scale:dpi/72}) const canvas=document.getElementById('canvas') as HTMLCanvasElement canvas.width=Math.ceil(viewport.width);canvas.height=Math.ceil(viewport.height) await page.render({canvas,canvasContext:canvas.getContext('2d')!,viewport,background:'white'}).promise return canvas.toDataURL('image/png') }finally{await doc.destroy()} }