【问题标题】:Does Node@6 support puppeteer api to generate PDFNode@6 是否支持 puppeteer api 生成 PDF
【发布时间】:2018-07-13 07:47:33
【问题描述】:

我已经成功地使用 puppeteer api 和最新版本的 Node 生成了 PDF,即 Node@8。这是最新的代码。但要求是使用带有 Node@6 的 puppeteer api 生成 PDF。

`const express = require('express');
const app = express();
const puppeteer = require('puppeteer');
(async () => {
  const browser = await puppeteer.launch();
  const page = await browser.newPage();
  await page.goto('http://www.google.com', {waitUntil: 'networkidle2'});
  await page.pdf({path: 'hn8.pdf', width: '1600px' , height: '800px'});
  await browser.close();
})();
module.exports = app;` 

此代码具有在 Node7 中引入的 await() 和 async。我搜索了几个博客,它说同样可以在 Node6 中完成。任何帮助表示赞赏

【问题讨论】:

    标签: node.js pdf asynchronous puppeteer google-chrome-headless


    【解决方案1】:

    只需将异步函数转换为经典承诺:

    const puppeteer = require('puppeteer');
    
    puppeteer.launch().then(browser => {
      browser.newPage().then(page => {
        page
          .goto('http://www.google.com', { waitUntil: 'networkidle2' })
          .then(page.pdf({ path: 'hn8.pdf', width: '1600px', height: '800px' }))
          .then(() => {
            browser.close();
          });
      });
    });
    

    【讨论】:

    • 感谢@Everettss。但这会返回一个空的pdf。添加退货解决了我的问题。
    • 你必须在哪里添加return
    • 在每个promise之后添加一个return。下面的例子 puppeteer.launch() .then(b => { browser = b; return browser.newPage();}) .then(a => {page = a; return a.goto('google.com')})
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2014-07-25
    • 2013-04-25
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-10-16
    • 2015-12-18
    相关资源
    最近更新 更多