背景
我正在使用node.js表达应用程序,我们需要生成PDF.目前我们正在使用谷歌的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但不是将其写入磁盘,而是立即将其返回给客户端?
解决方法:
奇怪我也有同样的要求.
问题本身就相对简单了.您需要做的就是删除path属性并等待page.pdf完成其任务,它将返回一个bytearray,只需将其作为响应发送.
您可以找到page.pdf(options)
的文档:
path
<07001> The file path to save the PDF to. If path is a relative path, then it is resolved relative to current working directory. If no path is provided, the PDF won’t be saved to the disk.- returns: <07002<07003>> Promise which resolves with PDF buffer.
async generatePdf(url) {
await page.goto(url, {waitUntil: 10000});
const buffer = await page.pdf({
format: 'A4'
});
return buffer;
}
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 [email protected] 举报,一经查实,本站将立刻删除。