服务端实现url网页截屏、HTML保存为高质量PDF[puppeteer]
服务端我们可以用puppeteer(基于chromium)来实现。
首先安装:
npm i puppeteer
安装前可配置 `.npmrc` 文件,以加速chromium的下载:
puppeteer_download_host=https://npm.taobao.org/mirrors
或者(前提是已安装chromium)
npm i puppeteer --puppeteer_skip_chromium_download
之后写一个js文件,保存图片或pdf:
const puppeteer = require('puppeteer'); (async () => { const browser = await puppeteer.launch(); const page = await browser.newPage(); await page.goto('https://www.qq.com'); await page.screenshot({path: 'qq.png', fullPage: true});//保存为图片
await page.pdf({path: 'hn.pdf', format: 'A4'}); //直接保存为pdf
await browser.close();
})();
再用node来运行这个文件即可。
值得一提的是,保存的PDF文件不是简单的截屏,而是具体的文本!也就是说放大之后不会模糊!文字内容可以复制、里面的连接也都是有效的!这个puppeteer做得太欠赞了!!
源码项目:https://github.com/hzsrc/puppeteer-nodejs
对于C#,可用puppeteer-sharp来实现相同功能: https://github.com/kblok/puppeteer-sharp
是不是很方便!
文档:https://zhaoqize.github.io/puppeteer-api-zh_CN/#/