index.js 1.9 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576
  1. const fs = require('fs')
  2. const path = require('path')
  3. const args = require('minimist')(process.argv.slice(2))
  4. const headless = args.headless || 'true'
  5. const url = args.url || 'true'
  6. const token = args.token || ''
  7. // const filePath = getDate()+(args.path || 'index.pdf');
  8. const filePath = (args.path || 'index.pdf')
  9. const puppeteer = require('puppeteer')
  10. const sleep = (delay) => new Promise((resolve) => setTimeout(resolve, delay))
  11. const saveScreenshot = async(url) => {
  12. if (!url) {
  13. return
  14. }
  15. // 启动浏览器
  16. const browser = await puppeteer.launch({
  17. args: ['--no-sandbox'],
  18. headless: headless === 'true',
  19. devtools: false
  20. })
  21. // 打开页面
  22. const page = await browser.newPage()
  23. // 设置浏览器视窗
  24. page.setViewport({
  25. width: 1123,
  26. height: 1080
  27. })
  28. // 地址栏输入网页地址
  29. await page.goto(url, {
  30. // 等界面加载完
  31. waitUntil: 'networkidle0'
  32. })
  33. await page.addStyleTag({ path: './style.css' })
  34. await sleep(50) // NOTE: 请求完毕不代表VUE运行完毕(比如el-table的resizeHandler),再等个小周期
  35. await page.pdf({
  36. path: filePath,
  37. printBackground: true,
  38. displayHeaderFooter: false,
  39. margin: {
  40. top: '1.27cm',
  41. bottom: '1.27cm',
  42. left: '1.27cm',
  43. right: '1.27cm'
  44. },
  45. format: 'A4'
  46. })
  47. // 关闭浏览器
  48. await browser.close()
  49. }
  50. saveScreenshot(`${url}`)
  51. function getDate() {
  52. var myDate = new Date()
  53. //获取当前年
  54. var year = myDate.getFullYear()
  55. //获取当前月
  56. var month = myDate.getMonth() + 1
  57. //获取当前日
  58. var date = myDate.getDate()
  59. var h = myDate.getHours() //获取当前小时数(0-23)
  60. var m = myDate.getMinutes() //获取当前分钟数(0-59)
  61. var s = myDate.getSeconds()
  62. //获取当前时间
  63. var now = year + '' + conver(month) + '' + conver(date) + conver(h) + '' + conver(m) + '' + conver(s)
  64. return now
  65. }
  66. //日期时间处理
  67. function conver(s) {
  68. return s < 10 ? '0' + s : s
  69. }