const fs = require('fs') const path = require('path') const args = require('minimist')(process.argv.slice(2)) const headless = args.headless || 'true' const url = args.url || 'true' const token = args.token || '' // const filePath = getDate()+(args.path || 'index.pdf'); const filePath = (args.path || 'index.pdf') const puppeteer = require('puppeteer') const sleep = (delay) => new Promise((resolve) => setTimeout(resolve, delay)) const saveScreenshot = async(url) => { if (!url) { return } // 启动浏览器 const browser = await puppeteer.launch({ args: ['--no-sandbox'], headless: headless === 'true', devtools: false }) // 打开页面 const page = await browser.newPage() // 设置浏览器视窗 page.setViewport({ width: 1123, height: 1080 }) // 地址栏输入网页地址 await page.goto(url, { // 等界面加载完 waitUntil: 'networkidle0' }) await page.addStyleTag({ path: './style.css' }) await sleep(50) // NOTE: 请求完毕不代表VUE运行完毕(比如el-table的resizeHandler),再等个小周期 await page.pdf({ path: filePath, printBackground: true, displayHeaderFooter: false, margin: { top: '1.27cm', bottom: '1.27cm', left: '1.27cm', right: '1.27cm' }, format: 'A4' }) // 关闭浏览器 await browser.close() } saveScreenshot(`${url}`) function getDate() { var myDate = new Date() //获取当前年 var year = myDate.getFullYear() //获取当前月 var month = myDate.getMonth() + 1 //获取当前日 var date = myDate.getDate() var h = myDate.getHours() //获取当前小时数(0-23) var m = myDate.getMinutes() //获取当前分钟数(0-59) var s = myDate.getSeconds() //获取当前时间 var now = year + '' + conver(month) + '' + conver(date) + conver(h) + '' + conver(m) + '' + conver(s) return now } //日期时间处理 function conver(s) { return s < 10 ? '0' + s : s }