16 lines
812 B
TypeScript
16 lines
812 B
TypeScript
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<string>} }
|
|
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()}
|
|
}
|