const fs = require('fs') const path = require('path') const { createCanvas, DOMMatrix, ImageData, Path2D } = require('@napi-rs/canvas') global.DOMMatrix = DOMMatrix global.ImageData = ImageData global.Path2D = Path2D if (!process.getBuiltinModule) process.getBuiltinModule = name => require(name) async function main() { const pdfjs = await import('pdfjs-dist/legacy/build/pdf.mjs') const root = path.resolve(__dirname, '..', '..') const pdfPath = path.resolve(root, 'doc', '大连元利流体技术有限公司MES系统标准技术文档_V1.0_2026-07-24.pdf') const task = pdfjs.getDocument({ data: new Uint8Array(fs.readFileSync(pdfPath)), disableWorker: true }) const pdf = await task.promise const requested = process.argv.slice(2).map(Number).filter(Number.isInteger) if (requested.length === 0) { for (let pageNumber = 1; pageNumber <= pdf.numPages; pageNumber++) { const page = await pdf.getPage(pageNumber) const content = await page.getTextContent() const text = content.items.map(item => item.str).join(' ').replace(/\s+/g, ' ').trim() console.log(`${pageNumber}\t${text.slice(0, 110)}`) } return } for (const pageNumber of requested) { if (pageNumber < 1 || pageNumber > pdf.numPages) { throw new Error(`Page ${pageNumber} is outside 1-${pdf.numPages}`) } const page = await pdf.getPage(pageNumber) const viewport = page.getViewport({ scale: 1.6 }) const canvas = createCanvas(Math.ceil(viewport.width), Math.ceil(viewport.height)) const context = canvas.getContext('2d') context.fillStyle = '#ffffff' context.fillRect(0, 0, canvas.width, canvas.height) await page.render({ canvasContext: context, viewport }).promise const outputPath = path.resolve(__dirname, `technical-pdf-page-${pageNumber}.png`) fs.writeFileSync(outputPath, canvas.toBuffer('image/png')) console.log(`Rendered: ${outputPath}`) } console.log(`PDF pages: ${pdf.numPages}`) } main().catch(error => { console.error(error.stack || error.message) process.exitCode = 1 })