服务端实现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/#/

 

posted on 2020-03-07 14:36  东篱南山  阅读(544)  评论(0编辑  收藏  举报

导航