关于wkhtmltopdf

779 阅读3分钟

持续创作,加速成长!这是我参与「掘金日新计划 · 6 月更文挑战」的第9天,点击查看活动详情

在项目开发过程中,需要使用到将html转化为pdf的需求。目前已经有较多解决方案,现提供一种相对较旧的但是极为简单的解决方案,一些小项目使用完全够了。本文就wkhtmltopdf做一个小小的demo总结

入门使用

wkhtmltopdf的官方下载地址:wkhtmltopdf.org/downloads.h…

下载完成后,直接在cmd中输入其参数指令wkhtmltopdf xxx.html d:a.pdf即可

image.png 则在d盘就会a.pdf,该pdf即是由xxx.html转换而来的。

参数详解

由上可知wkhtmltopdf的基本命令参数语法为:

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

其中,命令参数包含五部分,分别是“全局参数”,“大纲参数选项”,“页面对象参数”,“页眉和页脚参数选项”和“目录对象参数”。

全局参数

命令解析
--collate当输出多个副本时进行校验(这是默认设置)
--no-collate当输出多个副本时不进行校验
--cookie-jar 从提供的JAR文件中读写cookie数据
--copies 设置输出副本的数量(默认主1),其实为1就够了
-d, --dpi 指定一个要分辨率(这在 X11 系统中并没有什么卵用)
-H, --extended-help相对 -h 参数,显示更详细的说明文档
-g, --grayscale指定以灰度图生成PDF文档。占用的空间更小
-h, --help显示帮助信息
--htmldoc输出程序的html帮助文档
--image-dpi 当页面中有内嵌的图片时, 会下载此命令行参数指定尺寸的图片(默认值是 600)
--image-quality 当使用 jpeg 算法压缩图片时使用这个参数指定的质量(默认为 94)
--license输出授权信息并退出
-l, --lowquality生成低质量的 PDF/PS ,能够很好的节约最终生成文档所占存储空间
--manpage输出程序的手册页
-B, --margin-bottom 设置页面的 底边距
-L, --margin-left 设置页面的 左边距 (默认是 10mm)
-R, --margin-right 设置页面的 右边距 (默认是 10mm)
-T, --margin-top 设置页面的 上边距
-O, --orientation 设置为“风景(Landscape)”或“肖像(Portrait)”模式, 默认是肖像模块(Portrait)
--page-height 页面高度
-s, --page-size 设置页面的尺寸,如:A4,Letter等,默认是:A4
--page-width 页面宽度
--no-pdf-compression不对PDF对象使用丢失少量信息的压缩算法,不建议使用些参数, 因为生成的PDF文件会非常大。
-q, --quiet静态模式,不在标准输出中打印任何信息
--read-args-from-stdin从标准输入中读取命令行参数
--readme输出程序的 readme 文档
--title 生成的PDF文档的标题,如果不指定则使用第一个文档的标题
-V, --version输出版本信息后退出

大纲参数选项

命令解析
--dump-default-toc-xsl输出默认的 TOC xsl 样式表到标准输出
--dump-outline 输出“大纲”到指定的文件(文件内容为xml)
--outline在生成的PDF文档中输出“大纲”(这是默认设置)
--no-outline不在pdf文档中输出大纲
--outline-depth 设置生成大纲的深度(默认为 4)

image.png

image.png

image.png

关于模块设置不分页

由于需求涉及某个模块需要设置不分页的情况,这该怎么办呢?这就可以用到css的这个属性了:page-break-inside: avoid; 如给下图方框中的div模块设置分页不被截断,则可给该模块增加cell-col,并设置page-break-inside: avoid,那么就算pdf需要分页,也不会将这个模块截断。

.cell-col {
     page-break-inside: avoid;
 }

image.png