nodejs+Puppeteer批量访问HTML在本地建立多个PDF问题

因一个工作需要,拟用nodejs + puppeteer 批量访问某服务下的HTML,在本地建立多个PDF,所以期望封装一个模块,实现:

myHtml2Pdf( aURL ,pdfPath){
    // aURL : 访问的地址,都是静态页面
    // pdfPath : 本地存储的pdf路径
}

现在自己参考相应文档实现了一个myHtml2Pdf.js,其内容为:

const puppeteer= require('puppeteer');
const fs = require('fs');
const path = require('path');
async function myHtml2Pdf(aURL,pdfPath){
        const browser = await  puppeteer.launch();
        const page = await  browser.newPage();
        await page.goto(aURL, {
        //      waitUntil: 'networkidle2'
                waitUntil:'load'
        //              waitUntil:'domcontentload'
        });
        await console.log(outPath);
        const pdf = await page.pdf({
                path: pdfPath,
                format: 'A4',
        });
        await browser.close();
        return pdf
}
module.exports = myHtml2Pdf;

然后我建立了一个本地的测试文档: test.js,内容如下

const myHtml2Pdf= require('./myHtml2Pdf.js');

let url1='https://www.baidu.com/';
let url2='https://www.bing.com/';
let pdf1='./baidu.pdf';
let pdf2='./bing.pdf';
myHtml2Pdf(url1, pdf1);
myHtml2Pdf(url2, pdf2);

nodejs test.js 来运行也能正确获取到对应pdf文件(我自己准备生成的页面格式很简单,所以先不考虑美化问题)。

但真正批量使用时(实际有几百个页面),却不能正确输出一个pdf文件啦,也不报错,本来模块中也有输出日志的地方,也不输出日志啦,不知道是什么原因?!

阅读 1.7k
1 个回答

先试着改成串行吧,puppeteer 要启动 chromium,其实系统消耗不小,你跑得多了,即时不出问题,也可能卡死。

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题
宣传栏