node命令行工具将网页导出为pdf

在前端开发中,如果我们遇到需要截图网页的场景,一般都会选择使用html2canvas或者domtoimage,其中domtoimage比html2canvas运行效率好,截图质量高,他们的基本原理都差不多,都是借助了svg的foreign object来实现的,具体内容可以移步“巧用canvas实现网页截图”查看,今天这里介绍的是一个node写的命令行工具,可以将网页导出为pdf,这个工具的名字叫percollate。

一、什么是percollate?

percollate是一个可以将网页转换为组织美观的pdf的命令行工具。

二、如何安装percollate

安装之前需要注意,由于percollate使用了新的Javascript语法,所以需要且包本地node版本>=8.6.0, 如果在开发过程中遇到错误SyntaxError: Unexpected token errors,你可以通过node --version来确认你本地的node版本。

然后通过在命令行运行命令:

# 通过npm安装
npm install -g percollate

# 通过yarn安装
yarn global add percollate

如果你想将你本地的percollate的升级为最新版本,可以通过在命令行运行以下命令。

# np,
npm install -g percollate

# yarn
yarn global upgrade --latest percollate

三、使用方式

1、可用命令

percollate pdf 可以同时将多个网页一次性生成到一个pdf文件里面

percollate epub 目前尚未实现

percollate html 目前尚未实现

2、可选参数

a、-o, --output 指定生成的文件名,如果不传则默认网页的title作为生成的文件名

b、--individual 在传入多个web页面时,将每一个页面生成单独的pdf文件

c、--template 自定义html模版的路径

d、--style 自定义css的路径

e、--css 通过命令行传入的附加css样式表,可用于覆盖页面默认的或者自定义的css样式。

四、使用方式

1、将一个网页生成一个pdf文件

percollate pdf --output some.pdf https://example.com

2、将多个网页一次性生成到一个pdf文件中

percollate pdf --output some.pdf https://example.com/page1 https://example.com/page2

3、如果需要将同时传入的多个网页生成单独的pdf文件,可以附加参数--individual。

percollate pdf --individual --output some.pdf https://example.com/page1 https://example.com/page2

4、你可以将带转换成pdf的网页预先定义在一个文件中,如果通过通过linux命令借助管道传递给percollate

cat urls.txt | xargs percollate pdf --output some.pdf

5、自定义生成pdf页面的尺寸和边距

默认的页面尺寸是A5(竖版),但我们可以通过参数--css来覆盖默认尺寸,--css值的规范请点击这里

percollate pdf --output some.pdf --css "@page { size: A3 landscape }" http://example.com

类似定义方式:

custom margins: @page { margin: 0 }
the base font size: html { font-size: 10pt }

官方github:https://github.com/danburzo/percollate

  • 支付宝二维码 支付宝
  • 微信二维码 微信
相关文章