node.js 生成pdf [puppeteer]

node脚本内容:

    const puppeteer = require('puppeteer');
    const args = require('minimist')(process.argv.slice(2),{number: ["deviceScaleFactor"], boolean: ["displayHeaderFooter"], string: ["url", "fileName", "headerTemplate","footerTemplate","top","bottom","left","right","devices"]});
    console.log(args);
    (async () => {
      const browser = await puppeteer.launch({
          args:['--no-sandbox'], 
          headless: true,
          defaultViewport: {
              width: args['width'],
              height: args['height'],
              hasTouch: true,
              isMobile: true,
              deviceScaleFactor: args['deviceScaleFactor'],
          },
        });
      const page = await browser.newPage();
      if(args['devices']!='null'){
         await page.emulate(puppeteer.devices[args['devices']]);
      }
      await page.goto(args['url'], {waitUntil: 'networkidle0'});//固定值
      if(args['waitForSelector']!='null'){
        await page.waitForSelector(args['waitForSelector']);
      }
      await page.waitForTimeout(1500);//固定值
      await page.pdf({path: args['fileName'], format: 'A4',
      displayHeaderFooter : args['displayHeaderFooter'],// 变量
      margin: {top: args['top'], bottom: args['bottom'], left: args['left'], right: args['right']},
      printBackground: true,//固定值
      headerTemplate: args['headerTemplate'],
      footerTemplate: args['footerTemplate'],
    });
      await page.close();
      await browser.close();//默认
    })();
const express = require('express');
const router = express.Router();
// const {jsPDF} = require("jspdf");
const puppeteer = require('puppeteer');

router.post('/pdfCreate', async function (req, res, next) {
    let args = req.body

    const browser = await puppeteer.launch();
    const page = await browser.newPage();
    await page.goto(args['url'], {
        waitUntil: 'networkidle2',
    });

    let path = './public/file/hn.pdf'//生成文件的地方
    await page.pdf({path, format: 'a4'});

    await browser.close();

    res.send({
        url: '/file/hn.pdf'
    })
})


module.exports = router;

https://github.com/simonwoo/disease-report-server

https://juejin.cn/post/6844903865716834318#heading-4

https://www.cnblogs.com/miku561/p/14292064.html

https://www.jianshu.com/p/4d7c2c343c44

https://www.php.cn/js-tutorial-460102.html

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值