node程序使用puppeteer将页面生成pdf,并在docker中部署

puppeteer的使用

1.puppeteer用法
//引入
const puppeteer = require("puppeteer");

//绘制网页
let htmlTemp = `页面内容`

//生成网页文件
fs.writeFileSync(
   path.join(__dirname, `../../../static/pdf/${fileName}.html`),
   htmlTemp,
   (err) => {}
 );
 
//初始化puppeteer的浏览器进程
 const browser = await puppeteer.launch({
   //     executablePath: pathToExtension,
   //     headless: true,
   args: [
     "--disable-infobars",
     "--no-sandbox",
     "--disable-setuid-sandbox",
   ],
   //     ignoreHTTPSErrors: true,
 });
 const page = await browser.newPage();
 //使用初始化的浏览器访问自己生成的网页文件
 await page.goto(`${Key.viewUrl}/pdf/${fileName}.html`);
 //生成pdf文件
 await page.pdf({
	 path: path.join(__dirname, `../../../static/pdf/${fileName}`),
	  format: "A4",
	  margin: {
	    top: "20px",
	    bottom: "0",
	    left: "30px",
	    right: "30px",
	  },
	});
 //关闭
 await browser.close(`${Key.viewUrl}/pdf/${fileName}`);

详细参数自行查阅官方文档。官方文档

2.部署docker

通过DockerFile安装chromium(puppeteer依赖的chrome内核),并安装pm2来部署node程序。

  • DockerFile文件
FROM node:12
RUN apt-get update \
    && apt-get install -y wget gnupg \
    && wget -q -O - https://dl-ssl.google.com/linux/linux_signing_key.pub | apt-key add - \
    && sh -c 'echo "deb [arch=amd64] http://dl.google.com/linux/chrome/deb/ stable main" >> /etc/apt/sources.list.d/google.list' \
    && apt-get update \
    && apt-get install -y google-chrome-stable fonts-ipafont-gothic fonts-wqy-zenhei fonts-thai-tlwg fonts-kacst fonts-freefont-ttf libxss1 \
      --no-install-recommends \
    && rm -rf /var/lib/apt/lists/*
WORKDIR /server

RUN npm i pm2 -g
RUN npm i
EXPOSE 3001
CMD ["pm2-runtime", "start", "process.json"]
  • process.json 文件,具体参数参照pm2官网 官方文档
{
  "name": "xxx",
  "script": "./app.js",
  "exec_mode": "cluster",
  "instances": 4,
  "wait_ready": true,
  "listen_timeout": 10000,
  "kill_timeOut": 20000,
  "env": {
    "NODE_ENV": "dev",
  }
}
3.检验
docker exec -it xxx(服务名称) /bin/sh
pm2 list

pm2显示结果pm2显示结果

  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值