Files
MES_Manage_View_V20/work/system-manual/render-pdf-page.js

35 lines
1.5 KiB
JavaScript

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.1_2026-07-23.pdf')
const pageNumber = Number(process.argv[2] || 1)
const outputPath = path.resolve(__dirname, `pdf-page-${pageNumber}.png`)
const task = pdfjs.getDocument({ data: new Uint8Array(fs.readFileSync(pdfPath)), disableWorker: true })
const pdf = await task.promise
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.5 })
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
fs.writeFileSync(outputPath, canvas.toBuffer('image/png'))
console.log(`PDF pages: ${pdf.numPages}`)
console.log(`Rendered: ${outputPath}`)
}
main().catch(error => {
console.error(error.stack || error.message)
process.exitCode = 1
})