一、 服务器中安装 puppeteer

npm install puppeteer -g

二、服务器安装相对应软件

环境 CenteOs7.2

  1. # 依赖库
  2. yum install
  3. pango.x86_64
  4. libXcomposite.x86_64
  5. libXcursor.x86_64
  6. libXdamage.x86_64
  7. libXext.x86_64
  8. libXi.x86_64
  9. libXtst.x86_64
  10. cups-libs.x86_64
  11. libXScrnSaver.x86_64
  12. libXrandr.x86_64
  13. GConf2.x86_64
  14. alsa-lib.x86_64
  15. atk.x86_64
  16. gtk3.x86_64 -y
  1. # 字体
  2. yum install
  3. ipa-gothic-fonts
  4. xorg-x11-fonts-100dpi
  5. xorg-x11-fonts-75dpi
  6. xorg-x11-utils
  7. xorg-x11-fonts-cyrillic
  8. xorg-x11-fonts-Type1
  9. xorg-x11-fonts-misc -y

三、执行demo

  1. // Egg.js项目 - /service/exportService.js
  2. import { Service } from 'egg';
  3. import puppeteer = require('puppeteer');
  4. export default class ExportService extends Service {
  5. public async exportPdf() {
  6. const browser = await puppeteer.launch({
  7. args: [ '--disable-dev-shm-usage', '--no-sandbox' ],
  8. });
  9. const page = await browser.newPage();
  10. await page.goto('http://www.baidu.com');
  11. // 页脚
  12. const footerTemplate = `<div
  13. style="width:80%;margin:0 auto;font-size:8px;border-top:1px solid #ddd;padding:10px 0;display: flex; justify-content: space-between; ">
  14. <span style="">我是页脚</span>
  15. <div><span class="pageNumber">
  16. </span> / <span class="totalPages"></span></div>
  17. </div>`;
  18. const options: puppeteer.PDFOptions = {
  19. format: 'a4',
  20. printBackground: true,
  21. displayHeaderFooter: true,
  22. footerTemplate,
  23. };
  24. // 封面
  25. const page1 = await page.pdf({
  26. ...options,
  27. });
  28. const pdfs = page1;
  29. return pdfs;
  30. }
  31. }