有需求,把若干个页面导出pdf并打包下载。
服务器环境CentOS 7.6.1810 分析需求后,决定用puppeteer进行chrome无头浏览器进行操作。
之前都没有接触过这个东西,在git上找到这个包,根据提示安装了puppeteer。
npm i puppeteer然后复制了导出pdf的code
const puppeteer = require('puppeteer'); (async () => { const browser = await puppeteer.launch(); const page = await browser.newPage(); await page.goto('https://news.ycombinator.com', {waitUntil: 'networkidle2'}); await page.pdf({path: 'hn.pdf', format: 'A4'}); await browser.close(); })();然后通过node运行
node test.js很好,报错了......
报错没有libatk-bridge-2.0,经过一系列查阅还是没搞清楚这个东西是个啥,最后在大牛的指点下,找到了这个。
#依赖库 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重新运行文件,很好,错误变了,变成了不能在root user下运行沙箱,我一个前端再次不会了,咋办?
只能再次请教大牛,最后代码改成
const puppeteer = require('puppeteer'); (async () => { const browser = await puppeteer.launch({ args: ['--no-sandbox'], headless: true }); const page = await browser.newPage(); await page.goto('https://news.ycombinator.com', {waitUntil: 'networkidle2'}); await page.pdf({path: 'hn.pdf', format: 'A4'}); await browser.close(); })();运行,成功导出了hn.pdf。
心得:落魄的前端开发又被打击了....
