Initial commit: Receipt Studio desktop application
This commit is contained in:
@@ -0,0 +1,15 @@
|
||||
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()}
|
||||
}
|
||||
Reference in New Issue
Block a user