背景
我在需要生成 PDF 的 node.js Express 应用程序中工作。目前我们正在使用来自 Google 的 Puppeteer,这让这一切变得简单。在文档中,它显示的方法是将路径传递给对象,告诉 Puppeteer 在何处写入 PDF。
问题
我不想将此 PDF 文件写入磁盘。这里的目标是让客户端到达终点,在该终点生成 PDF 并将其返回给客户端。创建一个文件 2 秒会增加一点点状态,这让我不得不处理更多令人头疼的事情才能部署到生产环境。
示例
(async () => {
const browser = await puppeteer.launch();
const page = await browser.newPage();
await page.goto(
'https://example.com/',
);
await page.pdf({
path: filePath,
format: 'A4',
margin: {
top: '20px',
left: '20px',
right: '20px',
bottom: '20px',
},
});
await browser.close();
问题
在这个代码示例中,我创建了一个 PDF 并将其存储到磁盘。如何创建此 PDF,而不是将其写入磁盘,而是立即在响应中将其返回给客户端?
最佳答案
奇怪,我也有同样的需求。
问题本身相对简单。您需要做的就是删除路径属性并等待 page.pdf 完成其任务,它将返回一个字节数组,只需将其作为响应发送即可。
您可以找到 page.pdf(options)
的文档:
async generatePdf(url) {
await page.goto(url, {waitUntil: 10000});
const buffer = await page.pdf({
format: 'A4'
});
return buffer;
}
关于javascript - 如何在 Node 环境中使用 Puppeteer 创建 PDF 而无需将其写入磁盘,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50651591/