// Dump text items with page, x, y, width for pages [from..to] as JSON lines. import { getDocument } from 'pdfjs-dist/legacy/build/pdf.mjs'; import fs from 'fs'; const [,, file, from, to, out] = process.argv; const doc = await getDocument({ data: new Uint8Array(fs.readFileSync(file)) }).promise; const ws = fs.createWriteStream(out); for (let p = +from; p <= Math.min(+to, doc.numPages); p++) { const page = await doc.getPage(p); const vp = page.getViewport({ scale: 1 }); const tc = await page.getTextContent(); for (const it of tc.items) { if (!it.str || !it.str.trim()) continue; ws.write(JSON.stringify({ p, x: +it.transform[4].toFixed(1), y: +(vp.height - it.transform[5]).toFixed(1), w: +it.width.toFixed(1), s: it.str }) + '\n'); } } ws.end(); console.log('pages', doc.numPages);