ppu-pdf
Version:
Easily extract text from digital PDF files with coordinate and font size included, and optionally group text by lines or render scanned pdf to canvas/png.
1 lines • 999 B
JavaScript
import{createCanvas}from"@napi-rs/canvas";import{createWriteStream,existsSync,mkdirSync}from"fs";import{join}from"path";import{BasePdfReaderCommon}from"./core/base-pdf-reader-common.js";export class PdfReaderCommon extends BasePdfReaderCommon{async saveCanvasToPng(canvas,filename,foldername){return new Promise((res,rej)=>{try{let folderPath=join(process.cwd(),foldername);if(!existsSync(folderPath)){mkdirSync(folderPath,{recursive:true})}let newCanvas=createCanvas(canvas.width,canvas.height);let ctx=newCanvas.getContext("2d");ctx.drawImage(canvas,0,0);let filePath=join(folderPath,filename);let out=createWriteStream(filePath);let buffer=newCanvas.toBuffer("image/png");out.write(buffer,(err)=>{if(err){rej(err)}else{res()}})}catch(error){rej(error)}})}async dumpCanvasMapCommon(canvasMap,filename,foldername="out",startIndex=0){for(let i=startIndex;i<canvasMap.size+startIndex;i++){let canvas=canvasMap.get(i);if(canvas){await this.saveCanvasToPng(canvas,`${filename}-${i}.png`,foldername)}}}}