nodejs后端使用pdfjs-dist将pdf转图片
时间: 2025-03-06 14:05:07 浏览: 25
使用 pdfjs-dist
库在 Node.js 后端环境将 PDF 文件转换为图片
为了实现这一目标,可以采用如下方法:
安装必要的依赖包。这包括 pdfjs-dist
和图像处理库如 canvas
或者其他支持创建图像的工具[^3]。
npm install pdfjs-dist canvas
编写用于加载 PDF 文档并将其页面渲染成图像的脚本。下面是一个简单的例子来展示如何操作:
const fs = require('fs');
const { createCanvas } = require('canvas');
const pdfjsLib = require('pdfjs-dist');
// 加载PDF文档
async function loadPdfDocument(filePath) {
const data = fs.readFileSync(filePath);
return await pdfjsLib.getDocument(data).promise;
}
// 将指定页码的内容绘制到画布上,并保存为PNG格式文件
async function renderPageToImage(doc, pageNumber, outputFilePath) {
const page = await doc.getPage(pageNumber);
// 设置缩放比例和计算视口尺寸
const scale = 2; // 可调整分辨率
const viewport = page.getViewport({ scale });
// 创建一个新的 Canvas 对象
const canvas = createCanvas(viewport.width, viewport.height);
const context = canvas.getContext('2d');
// 准备用于绘图的目的地矩形区域参数
const transform = [
viewport.transform[0],
viewport.transform[1],
viewport.transform[2],
viewport.transform[3],
0,
0
];
// 渲染页面内容至画布
const task = page.render({
canvasContext: context,
transform,
intent: 'print'
});
await task.promise;
// 输出图像数据流
const outStream = fs.createWriteStream(outputFilePath);
const pngStream = canvas.pngStream();
pngStream.on('data', (chunk) => {
outStream.write(chunk);
});
pngStream.on('end', () => console.log(`Finished rendering ${outputFilePath}`));
}
通过上述代码片段中的函数,可以根据给定路径读取本地存储的 PDF 文件,并逐页渲染其内容作为 PNG 图像保存下来。注意这里使用了 createCanvas()
方法来自动生成适当大小的空白画布以适应每一页的具体布局;同时设置了放大倍数 (scale
) 来控制最终输出的质量。
相关推荐













