Initial commit: Receipt Studio desktop application

This commit is contained in:
fuenmao
2026-10-19 11:09:09 +08:00
commit 2caac3c31f
77 changed files with 9846 additions and 0 deletions
+15
View File
@@ -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()}
}