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

原文地址:https://www.cnblogs.com/hz-blog/p/puppeteer-html-web-page-screenshot-pdf.html