Puppeteer导入pdf攻略以及遇到问题

Puppeteer 是一个 Node 库,它提供了一个高级 API 来通过 DevTools 协议控制 Chromium 或 Chrome。Puppeteer 默认以 headless 模式运行,但是可以通过修改配置文件运行“有头”模式。

实现思路:通过Puppeteer提供的api启动无头浏览器,打开一个新页面,设置视图并且导航到提供的URL

  • 下载puppeteer。注意:我用的是16.1.1版本,最开始用的是最新的,不过上测试环境之后,导出会报错,是因为测试环境的node版本低,服务器node版本不能改变,所以只能降级puppeteer。

    安装puppeteer

  • 写接口


    写接口
  • 接口方法(最重要一步)


    首先引入puppetter
async handlePdf({ html, name }) {
        // 打开一个浏览器实例
        const brower = await puppeteer.launch({
            headless: true, // 启动无头浏览器
            devtools: true, // 协议控制
            args: [
                '--disable-gpu', // 表示打开一个禁用GPU加速的浏览器窗口
                '--disable-dev-shm-usage', // 禁止使用/dev/shm,防止内存不够用
                '--disable-setuid-sandbox', // 与--no-sandbox配合
                '--no-first-run', // 禁止首次运行界面
                '--no-sandbox', // 不使用沙箱
                '--no-zygote', // 禁止zygote进程fork子进程
                '--single-process' // 单进程
            ] 
            /*
              args:启动项,为了我们启动一个最小化可用的浏览器实例,其他不需要的功能都禁用掉,这样会大大提升启动速度
              args其他参数地址:https://www.cnblogs.com/hushaojun/p/5981646.html
            */
        })
        // 创建一个空白页面
        const page = await brower.newPage();
        // 设置页面内容
        // waitUntil参数,它就是用来配置这个判断成功的标准,它提供了四个可选值,一般就是networkidle0不用改,其他可自查
        await page.setContent(html, { waitUntil: 'networkidle0' })
        // 设置pdf格式
        await page.pdf({
            format: 'A4',
            scale: 1,
            margin: {
                top: '20px',
                right: '20px',
                bottom: '20px',
                left: '20px'
            },
            path: `download/${name}.pdf`,
        });
        // 关闭浏览器实例
        await brower.close();

        // 输出url
        return {
            url: `${name}.pdf`
        };
    }

额外的方法:
puppeteer和puppeteer-core在中文网上是这样说的


https://pptr.nodejs.cn/

我用的是Puppeteer,有的小伙伴是这样用的,如下

服务器上下载puppeteer-core版本,然后有个在线网址能下载chromium(具体哪个网址百度搜一下),然后把chromium的压缩包解压到nodemodule下面(具体目录搜一下),然后在puppeteer.launch里面把executablePath指向nodemodule下面的chromium路径

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容