本文已参与「新人创作礼」活动,一起开启掘金创作之路。
本文写于2020年9月,当时遇到一个需求,在题库系统中选择一些题目组成试卷,并将试卷导出用于打印。最终方案采用使用nodejs调用puppeteer访问页面,在页面渲染完毕后把页面保存为pdf。这里记录下在部署服务时遇到的一些问题。 puppeteer是chrome的无界面浏览器的nodejs工具包,提供了一系列高级API供服务端使用,官网地址 github.com/puppeteer/p…
由于其本身需要使用浏览器界面渲染,故在有界面安装过浏览器的操作系统(如windows)可以直接用,在linux需要先部署环境
在linux的centOS7上安装执行成功,将网页生成了pdf,在这里列一下步骤。
-
安装最新版nodejs,并配置npm,从其他服务器拷贝的nodejs的zip包会导致软连接失效,从而使npm无法使用,故拷贝nodejs时需要使用tar来压缩,或者直接用wget下载最新版
-
初始化工程,使用npm安装puppeteer,安装时有服务器安装失败,应该是权限问题,增加参数后正常了,使用root安装
npm install --unsafe-perm --registry=https://registry.npm.taobao.org
,不加该参数--unsafe-perm会默认使用nobody,可能有权限问题,指定国内仓库,速度会快很多 -
安装依赖,此步来源于网络 www.cnblogs.com/lzs-888/p/1…
-
依赖库
yum install nss 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 libwmf -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 -
增加中文字体,没有中文字体汉字会乱码,从windows拷贝ttf文件过去安装,我这里安装微软雅黑,参考文档 —— www.cnblogs.com/xiaochina/p…
- cd /usr/share/fonts/
- 将字体拷过去,可以从C:\Windows\Fonts 这个文件夹下找
- mkfontscale //字体扩展
mkfontdir //新增字体目录
fc-cache -fv //刷新缓存 - 验证字体安装情况 fc-list
-
-
启动程序,注意launch的时候需要指定非沙盒环境,否则报错,具体参数参考官网文档
-
const browser = await puppeteer.launch({args: ['--no-sandbox', '--disable-setuid-sandbox']});
-