Ubuntu 16:安装 wkhtmltopdf 方法

摘要:wkhtmltopdf 是一个开源的,使用Qt WebKit 渲染引擎,把 html 转换为 pdf 文件的命令行工具。

介绍

wkhtmltopdf并且wkhtmltoimage是开放源代码(LGPLv3)命令行工具,可使用Qt WebKit渲染引擎将HTML渲染为PDF和各种图像格式。它们不需要显示或显示服务。同时谷歌浏览器 Chrome 也使用的是Qt WebKit渲染引擎。

官网地址:https://wkhtmltopdf.org/index.html


安装

系统:Ubuntu 16.04

#apt安装
sudo apt-get install wkhtmltopdf # .deb 安装 sudo wget https://builds.wkhtmltopdf.org/0.12.1.3/wkhtmltox_0.12.1.3-1~bionic_amd64.deb
sudo dpkg -i wkhtmltox_0.12.1.3-1~bionic_amd64.deb
sudo apt-get install -f
sudo ln -s /usr/local/bin/wkhtmltopdf /usr/bin
sudo ln -s /usr/local/bin/wkhtmltoimage /usr/bin
#如果报错,则执行下面命令:

sudo apt-get install libxrender1


使用方法

cd ~
/usr/bin/wkhtmltopdf http://baidu.com baidu.pdf


Loading pages (1/6)
Counting pages (2/6)
Resolving links (4/6)
Loading headers and footers (5/6)
Printing pages (6/6)
Done

命令未报错情况下会在当前目录生成 baidu.pdf 文件

命令参数

官方文档地址:https://wkhtmltopdf.org/usage/wkhtmltopdf.txt

以下是部分参数的中文说明

全局参数

参数说明
 --collate输出多个副本时进行校验(默认设置)
--no-collate输出多个副本时不进行校验
--cookie-jar <path>从提供的cookie jar文件中读取和写入cookie
--copies <number>要打印到PDF文件中的副本数(默认值为1)
-d, --dpi <dpi>
显式更改dpi(dpi即分辨率,但此参数对基于x11的系统没有影响,默认值为96)
-H, --extended-help
显示更详细的帮助,即更详细版本的 -h 命令
-g, --grayscale
以灰度的形式生成 PDF(彩色的更占空间,另外,有些特殊需求可能也只要灰度的PDF)
-h, --help
显示帮助文档
--htmldoc以html的形式输出帮助文档
--image-dpi <integer>当页面嵌入图像时,将它们缩小到指定的dpi尺寸(默认值600)
--image-quality <integer>当使用jpeg算法压缩图像时,使用指定的图片质量(默认值94)
--license输出授权信息并退出
--log-level <level>在以下级别中指定日志级别:none, error, warn,info(默认)
-l, --lowquality
生成低质量的PDF/PS,对缩小结果文档大小,节约空间有较好帮助
--manpage输出程序的手册页
-B, --margin-bottom <unitreal>
设置页面下边距
-L, --margin-left <unitreal>
设置页面左边距(默认10mm)
-R, --margin-right <unitreal>
设置页面右边距(默认10mm)
-T, --margin-top <unitreal>
设置页面上边距
-O, --orientation <orientation>
将方向设置为“横向(Landscape)”或“纵向(Portrait)”模式,默认是纵向(Portrait)
-page-height <unitreal>页面高度
-s, --page-size <Size>
设置页面大小为A4(默认值),Letter等
--page-width <unitreal>页面宽度
--no-pdf-compression不对PDF使用无损压缩算法(无损压缩不会对文件造成很大损失,此参数非必要不使用)
 -q,  --quiet
减少冗长,保持向后兼容性;与使用--log level none相同,即静态模式,不在标准输出中打印任何信息
--read-args-from-stdin从stdin读取命令行参数
--readme输出程序的readme文档
--title <text>生成的PDF文件的标题(如果未指定,则使用第一个文档的标题)
-V,  --version
输出版本信息并退出

大纲参数

PDF的大纲会根据HTML的标题和标签自动生成

参数说明
--dump-default-toc-xsl输出默认的 TOC xsl 样式的"大纲"到标准输出(文件内容为xml)
--dump-outline <file>输出“大纲”到指定的文件(文件内容也为xml)
 --outline在生成的PDF文档中输出“大纲”(默认)
--no-outline不在PDF中输出“大纲”
--outline-depth <level>设置生成大纲的深度(默认值 4)

页面参数

参数说明
--allow <path>允许加载指定文件夹中的一个或多个文件
--background输出页面背景到PDF文档(这是默认设置)
--no-background-background相反
--bypass-proxy-for <value>绕过主机代理(可重复)
--cache-dir <path>网页的缓存目录
--checkbox-checked-svg <path>使用指定的SVG文件渲染选中的复选框
--checkbox-svg <path>使用指定的SVG文件渲染未选中的筛选框
--cookie <name> <value>设置访问网页时的cookie(可重复),值应该是URL编码的
--custom-header <name> <value>设置访问网页时的HTTP头信息
--custom-header-propagation为每个要加载的资源添加由 --custom-header 指定的HTTP头
--no-custom-header-propagation--custom-header-propagation相反
--debug-javascript显示javascript调试输出的信息
--no-debug-javascript--debug-javascript相反(这是默认设置)
--default-header添加一个默认的“头”,在页面的左头显示页面的名字,在页面的右头显示页码
--encoding <encoding>为输入的文本设置默认的编码方式
--disable-external-links禁止页面中的外链生成超链接
--enable-external-links与`--disable-external-links`相反(这是默认设置)
--disable-forms不转换HTML表单为PDF表单(这是默认设置)
--enable-forms--disable-forms相反
--images加载图片并输出到PDF文档(这是默认设置)
--no-images--images相反
--disable-internal-links禁止页面中的内链生成超链接
--enable-internal-links与`--disable-internal-links`相反(这是默认设置)
 -n,  --disable-javascript
禁止WEB页面执行 javascript
--enable-javascript允许WEB页面执行 javascript(这是默认设置)
--javascript-delay <msec>延迟一定的毫秒等待javascript 执行完成(默认值是200)
--keep-relative-links将相对外部链接保留为相对外部链接
--load-error-handling <handler>指定当页面加载失败后的动作,可以指定为:abort(中止,默认值)、ignore(忽略)、skip(跳过)
--load-media-error-handling <handler>指定当媒体文件加载失败后的动作,可以指定为:abort(中止)、ignore(忽略,默认值)、skip(跳过)
--disable-local-file-access不允许一个本地文件加载其他的本地文件,使用命令行参数 --allow 指定的目录除外。
--enable-local-file-access--disable-local-file-access相反(这是默认设置)
--minimum-font-size <int>设置最小的字号,除非必要不推荐使用该参数
--exclude-from-outline拒绝加载当前页面到PDF文档的目录和大纲中
--include-in-outline--exclude-from-outline相反(这是默认设置)
--page-offset <offset>设置页码的起始值(默认值为0)
--password <password>HTTP身份认证的密码
--disable-plugins禁止使用插件(这是默认设置)
--enable-plugins允许使用插件,但插件可能并不工作
--post <name> <value>添加一个POST字段(可重复)
--post-file <name> <value>添加一个POST文件
--print-media-type用显示媒体类型代替屏幕
--no-print-media-type--print-media-type相反(这是默认设置)
 -p, --proxy <proxy>
使用代理
--proxy-hostname-lookup使用代理解析主机名
--radiobutton-checked-svg <path>使用指定的SVG文件渲染选中的单选框
--radiobutton-svg <path>使用指定的SVG文件渲染未选中的单选框
--resolve-relative-links将相对外部链接解析为绝对链接(默认)
--run-sript <js>页面加载完成后执行一个附加的JS文件,可以重复使用此参数指定,多个要在页面加载完成后要执行的JS文件
--disable-smart-shrinking禁用WebKit使用智能收缩策略,该策略使像素/dpi(分辨率)比率不为常量
--enable-smart-shrinking--disable-smart-shrinking相反(这是默认设置)
--ssl-crt-path <path>openssl-pem格式的ssl客户机证书公钥的路径,可选后跟中间CA和受信任证书
--ssl-key-password <password>SSL客户端证书私钥的密码
--ssl-key-path <path>openssl pem格式的ssl客户机证书私钥路径
--stop-slow-scripts停止运行缓慢的javascript代码(这是默认设置)
--no-stop-slow-scripts--stop-slow-scripts相反
--disable-toc-back-links禁止从标题链接到目录(toc)(这是默认设置)
--enable-toc-back-links--disable-toc-back-links相反
--user-style-sheet <url>设置一个在每个页面都加载的用户自定义样式表
--username <username>HTTP身份验证的用户名
--viewport-size <>如果有自定义滚动条或CSS属性溢出以模拟窗口大小时,需要设置窗口大小
--window-status <windowStatus>在渲染呈现页面之前,等待window.status等于这个指定的字符串
--zoom <float>设置转换成PDF时页面的缩放比例(默认值是1)

页眉、页脚参数

页眉

参数说明
--header-center <text>在页眉的居中部分显示页眉文本 <text>
--header-font-name <name>设置页眉的字体 (默认为 Arial)
--header-font-size <size>设置页眉的字体大小 (默认为 12)
--header-html <url>添加一个html作为页眉
--header-left <text>在页眉的居左部分显示页眉文本 <text>
--header-line在页眉下方显示一条直线分隔正文
--no-header-line--header-line相反(这是默认设置)
--header-right <text>在页眉的居右部分显示页眉文本 <text>
--header-spacing <real>页眉与正文之间的距离(默认为零)
页脚
参数说明
--footer-center <text>在页脚的居中部分显示页脚文本 <text>
--footer-font-name <name>设置页脚的字体 (默认为 Arial)
--footer-font-size <size>设置页脚的字体大小 (默认为 12)
--footer-html <url>添加一个html作为页脚
--footer-left <text>在页脚的居左部分显示页脚文本 <text>
--footer-line在页脚上方显示一条直线分隔正文
--no-footer-line--footer-line相反(这是默认设置)
--footer-right <text>在页脚的居右部分显示页脚文本 <text>
--footer-spacing <real>页脚与正文之间的距离(默认为零)
共同参数
参数说明
--replace <name> <value>将[name]替换为页眉和页脚中的值

 TOC 参数

toc 是 table of content 的缩写,可以理解为目录的意思
参数说明
--disable-dotted-lines在目录中不使用虚线
--toc-header-text <text>设置目录的页眉文本
--toc-level-indentation <width>对于toc中的每个标题级别按此长度缩进(默认为1em)
--disable-toc-links在目录中不生成指向内容锚点的超链接
--toc-text-size-shrink <real>在目录中每级标题的缩放比例(默认为0.8)
--xsl-style-sheet <file>使用自定义的 XSL 样式表显示目录内容