HTML 转 PDF 之 wkhtmltopdf 工具精讲

工具 “wkhtmltopdf” 简介

【官网】:【http://wkhtmltopdf.org/

【下载请点击这里】 【http://wkhtmltopdf.org/downloads.html

工具全名叫 “wkhtmltopdf” ; 是一个使用 Qt WebKit 引擎做渲染的,能够把html 文档转换成 pdf 文档 或 图片(image) 的命令行工具。(强调一下:是 “命令行工具” )

支持多个平台,可在win,linux,os x 等系统下运行。

优点

生成PDF时会自动根据你在HTML页面中H标签生成树形目录结构。
小巧方便,转换速度快。
夸平台,在Liunx下用,在win下也可以用(我也只在这两个平台下用过)。
缺点
还没发现(狂笑……)

使用方式

使用前的准备

使用前一定要记得先下载安装才行,对于不同的操作系统可能会有需要设置环境变量的情况。如果你安装后在命令行执行 wkhtmltopdf -V 提示以下信息:

C:\Users\hehe>wkhtmltopdf -V    
'wkhtmltopdf' 不是内部或外部命令,也不是可运行的程序    或批处理文件。

这就说明你需要配置系统的环境变量了,根据情况把你安装wkhtmltopdf目录下的bin子目录加到 PATH 环境变量下。

我用的是win系统,我的安装到了D盘wkhtmltopdf目录下,所以我需要把 D:\wkhtmltopdf\bin 目录加入到环境变量 PATH 中

正确安装后是执行 wkhtmltopdf -V 会得到如下提示:


C:\Users\wfso>wkhtmltopdf -V
wkhtmltopdf 0.12.3.2 (with patched qt)

看上面的信息可知,写此篇时我系统里装的 wkhtmltopdf 的版本是 0.12.3.2

开始使用

命令格式:wkhtmltopdf [GLOBAL OPTION]… [OBJECT]…

命令行工具自然是没有图形界面的。

光看上面的命令格式好像不太简单理解应该怎么用啊,别急,下面会有详细介绍的,不过为了满足部分急性子,我先给几个例子在下面。伸手堂可以直接拿去用,不愿意深入了解的同学就不必再浪费时间了。
光看上面的命令格式好像不太简单理解应该怎么用啊,别急,下面会有详细介绍的,不过为了满足部分急性子,我先给几个例子在下面。伸手堂可以直接拿去用,不愿意深入了解的同学就不必再浪费时间了。

把一个html文件转换成PDF
命令格式 :wkhtmltopdf xxx.html xxx.pdf

D:\MyWorkSpace\markdown>wkhtmltopdf 1.html 1.pdf
Loading pages (1/6)
Counting pages (2/6)
Resolving links (4/6)
Loading headers and footers (5/6)
Printing pages (6/6)
Done

当你看到类似上面的内容时,说转换已经完成了,去打开转换好的pdf文档慢慢研究吧。

把一个 url 指向的网页转换成PDF

命令格式 : wkhtmltopdf url xxx.pdf

D:\MyWorkSpace\markdown>wkhtmltopdf www.yioks.com yioks.pdf
Loading pages (1/6)
QFont::setPixelSize: Pixel size <= 0 (0)                     ] 55%
Counting pages (2/6)
QFont::setPixelSize: Pixel size <= 0 (0)=====================] Object 1 of 1
Resolving links (4/6)
Loading headers and footers (5/6)
Printing pages (6/6)
Done

当你看到如上信息时代表转换成功,是不是很酷。

把html文件 和 url指向的网页 转换成图片
命令格式 :

wkhtmltoimage xxx.html xxx.jpg
wkhtmltoimage url xxx.jpg    

其实和转pdf时的参数是一样的,只是命令和输出文件的扩展名变了。上的命令格式中,我是把图片保存成了 jpg 格式,当然,如果你愿意也可以保存成其他图片格式(如:png),但文件可能会变大很多倍。在我的测试中,jpg格式文件是最小的。

应用场景

你能拿他来干什么我不知道,下面我说一下我用这个工具都做了什么。

场景一

首先,多年前在浏览器的收藏夹里收藏的好文章,我都一一转成了PDF,不要问我为什么,我就是这么做了。并且做的过程中我发现,我所收藏的链接已经有部分无法访问了。

场景二

网上各种工具的 单面文档(如:spring等),每次查看都要访问网络,如果没网了……,或者我想在手机上看……。所以果断转换成pdf存一份。

场景三

我开发的WEB应用程序中,需要用到下载PDF功能时,都是用这个工具把程序生成的动态网页HTML存储到服务器并转换成PDF后提供给用户下载的。

场景四

编不下去了,其实没有场景三,哈哈哈哈…… (狂笑),等我想到了再补充吧。如果你有属于自己应用场景一定要分享给我啊。

wkhtmltopdf 工具详解

本来下面就是针对 wkhtmltopdf 工具的详细介绍了,详细到这个命令的每一个参数都会单独做讲解。

术语定义

文档对象

“文档对象”是指PDF文档中的文档对象,共有三种类型的“文档对象”,他们分别是“页面对象”,“封面对象”和“目录对象”。

页面对象

“页面对象”是指以页面的形式在PDF文档中呈现的对象,这个是相对于“封面对象”和“目录对象”来讲的。此类对象会成为PDF文档中内容。

封面对象

“封面对象”是指以封面的形式在PDF文档中呈现的对象。这类对象会成为PDF文档中的封面。

目录对象

“目录对象”是以目录的形式在PDF文档中呈现的对象,又叫“TOC对象”。这类对象会成为PDF文档中的目录。

大纲

“大纲”是指阅读PDF文档时的书签导航。

外链

“外链”是指所有在这个页面中且不指向它自身页面中锚点的超链接。

内链

“内链”是指在这个页面中且指向的目标页面是这个页面本身中的一个锚点的超链接。

命令格式

wkhtmltopdf [GLOBAL OPTION]... [OBJECT]... <output file>

上述代码就是 wkhtmltopdf 的命令行格式,看似简单,其实在 [GLOBAL OPTION] 和 [OBJECT] 中还别有洞天。预知详情,且听我慢慢道来。

文档对象简介

wkhtmltopdf 能够把多个“对象”合并生成一个pdf文档,这些“对象”可以是“页面

  • 0
    点赞
  • 9
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值