Nodejs puppeteer 无头浏览器导出pdf

it2024-03-14  74

有需求,把若干个页面导出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。

心得:落魄的前端开发又被打击了....

最新回复(0)