首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >如何在节点环境中使用Puppeteer创建PDF而不将其写入磁盘

如何在节点环境中使用Puppeteer创建PDF而不将其写入磁盘
EN

Stack Overflow用户
提问于 2018-06-02 06:15:14
回答 1查看 1.5K关注 0票数 6

背景

我在一个node.js express应用程序中工作,其中我们需要生成PDF。目前我们使用的是Google的Puppeteer,这使得这一切变得很简单。在文档中,它显示了这样做的方式:将一个路径传递给对象,该路径告诉Puppeteer将PDF写到哪里。

Problem

我不希望将此PDF文件写入磁盘。这里的目标是让客户端到达一个端点,在那里将生成PDF并返回给客户端。创建一个2秒的文件会增加一点状态,这使得我不得不处理更多令人头疼的事情,以便部署到生产环境中。

示例

代码语言:javascript
复制
(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,而不是将其写入磁盘,而是在响应中立即将其返回给客户端?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2018-06-02 06:26:22

奇怪的是,我也有同样的要求。

问题本身是相对简单的。您所需要做的就是删除path属性并等待page.pdf完成其任务,它将返回一个bytearray,并将其作为响应发送。

您可以找到page.pdf(options)的文档

代码语言:javascript
复制
async generatePdf(url) {
   await page.goto(url, {waitUntil: 10000});
   const buffer = await page.pdf({
      format: 'A4'
   });
   return buffer;
}
票数 11
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/50651591

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档