背景
我在一个node.js express应用程序中工作,其中我们需要生成PDF。目前我们使用的是Google的Puppeteer,这使得这一切变得很简单。在文档中,它显示了这样做的方式:将一个路径传递给对象,该路径告诉Puppeteer将PDF写到哪里。
Problem
我不希望将此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,而不是将其写入磁盘,而是在响应中立即将其返回给客户端?
发布于 2018-06-02 06:26:22
奇怪的是,我也有同样的要求。
问题本身是相对简单的。您所需要做的就是删除path属性并等待page.pdf完成其任务,它将返回一个bytearray,并将其作为响应发送。
您可以找到page.pdf(options)
的文档
path
[string](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Data_structures#String_type)要保存的文件路径。如果path是相对路径,则相对于当前工作目录进行解析。如果未提供路径,则不会将PDF保存到磁盘。async generatePdf(url) {
await page.goto(url, {waitUntil: 10000});
const buffer = await page.pdf({
format: 'A4'
});
return buffer;
}
https://stackoverflow.com/questions/50651591
复制相似问题