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


版权声明:本文为Lakeson原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接和本声明。