将 PDF 文件转换为图片是一个常见的需求,尤其是在需要预览 PDF 内容或进行图像处理时。在 Node.js 环境中,有多个包和开源工具可以实现这一功能。以下是一些常用的方法和工具:
pdf-poppler
包pdf-poppler
是一个 Node.js 包,基于 Poppler 工具,可以将 PDF 转换为图像。
首先,确保你已经安装了 Poppler 工具。你可以通过包管理器安装:
然后,安装 pdf-poppler
包:
npm install pdf-poppler
const pdfPoppler = require('pdf-poppler');
const path = require('path');
const file = path.join(__dirname, 'example.pdf');
const outputDir = path.join(__dirname, 'output');
const opts = {
format: 'jpeg',
out_dir: outputDir,
out_prefix: path.basename(file, path.extname(file)),
page: null // null means all pages
};
pdfPoppler.convert(file, opts)
.then(res => {
console.log('Successfully converted');
})
.catch(error => {
console.error(error);
});
pdf2pic
包pdf2pic
是另一个流行的 Node.js 包,可以将 PDF 转换为图像。
npm install pdf2pic
const { fromPath } = require('pdf2pic');
const options = {
density: 100,
saveFilename: "untitled",
savePath: "./output",
format: "png",
width: 600,
height: 800
};
const storeAsImage = fromPath("example.pdf", options);
storeAsImage(1) // page number
.then((resolve) => {
console.log("Page 1 is now converted as image");
return resolve;
})
.catch((error) => {
console.error(error);
});
pdf-lib
和 canvas
包你也可以使用 pdf-lib
和 canvas
包来手动渲染 PDF 页面为图像。
npm install pdf-lib canvas
const { PDFDocument } = require('pdf-lib');
const { createCanvas, loadImage } = require('canvas');
const fs = require('fs');
async function pdfToImage(pdfPath, outputDir) {
const pdfBytes = fs.readFileSync(pdfPath);
const pdfDoc = await PDFDocument.load(pdfBytes);
const pages = pdfDoc.getPages();
for (let i = 0; i < pages.length; i++) {
const page = pages[i];
const viewport = page.getViewport({ scale: 1.0 });
const canvas = createCanvas(viewport.width, viewport.height);
const context = canvas.getContext('2d');
const renderContext = {
canvasContext: context,
viewport: viewport
};
await page.render(renderContext).promise;
const buffer = canvas.toBuffer('image/png');
fs.writeFileSync(`${outputDir}/page-${i + 1}.png`, buffer);
}
}
pdfToImage('example.pdf', './output')
.then(() => {
console.log('PDF successfully converted to images');
})
.catch((error) => {
console.error(error);
});
pdf-image
包pdf-image
是一个基于 pdfinfo
和 pdftoppm
的 Node.js 包,可以将 PDF 转换为图像。
首先,确保你已经安装了 poppler-utils
:
然后,安装 pdf-image
包:
npm install pdf-image
领取专属 10元无门槛券
手把手带您无忧上云