一、 服务器中安装 puppeteer
npm install puppeteer -g
二、服务器安装相对应软件
环境 CenteOs7.2
# 依赖库
yum install
pango.x86_64
libXcomposite.x86_64
libXcursor.x86_64
libXdamage.x86_64
libXext.x86_64
libXi.x86_64
libXtst.x86_64
cups-libs.x86_64
libXScrnSaver.x86_64
libXrandr.x86_64
GConf2.x86_64
alsa-lib.x86_64
atk.x86_64
gtk3.x86_64 -y
# 字体
yum install
ipa-gothic-fonts
xorg-x11-fonts-100dpi
xorg-x11-fonts-75dpi
xorg-x11-utils
xorg-x11-fonts-cyrillic
xorg-x11-fonts-Type1
xorg-x11-fonts-misc -y
三、执行demo
// Egg.js项目 - /service/exportService.js
import { Service } from 'egg';
import puppeteer = require('puppeteer');
export default class ExportService extends Service {
public async exportPdf() {
const browser = await puppeteer.launch({
args: [ '--disable-dev-shm-usage', '--no-sandbox' ],
});
const page = await browser.newPage();
await page.goto('http://www.baidu.com');
// 页脚
const footerTemplate = `<div
style="width:80%;margin:0 auto;font-size:8px;border-top:1px solid #ddd;padding:10px 0;display: flex; justify-content: space-between; ">
<span style="">我是页脚</span>
<div><span class="pageNumber">
</span> / <span class="totalPages"></span></div>
</div>`;
const options: puppeteer.PDFOptions = {
format: 'a4',
printBackground: true,
displayHeaderFooter: true,
footerTemplate,
};
// 封面
const page1 = await page.pdf({
...options,
});
const pdfs = page1;
return pdfs;
}
}