使用wkhtmltopd实现HTML转PDF
1. 下载
下载对应操作系统的安装文件:下载地址
2. 使用
安装成功后就可以通过命令来直接使用了,它的命令格式为
wkhtmltopdf [GLOBAL OPTION]... [OBJECT]...
[GLOBAL OPTION] 是用来添加全局参数的区域,[OBJECT] 是用来添加 wkhtmltopdf 对象(wkhtmltopdf 把对象分为 3 类,后文有详细内容)的区域,如果有多个对象,则按顺序放入。
3. 示例(使用默认参数直接打印)
wkhtmltopdf https://www.cnblogs.com/ C:\wkhtmltopdfToPdf\cnblogs.pdf Loading pages (1/6) Counting pages (2/6) Resolving links (4/6) Loading headers and footers (5/6) Printing pages (6/6) Done
4. 三类对象
命令 wkhtmltopdf [GLOBAL OPTION]... [OBJECT]...
4.1页面对象
页面对象使用以下方式将单个网页的内容放入输出文档中
(page)? [PAGE OPTION]...
(page)?
表示 page可以省略不写,即在不标明的时候,默认为页面对象。为页面对象所设置的参数可以被放置在全局参数域([GLOBAL OPTIONS])和页面参数域([PAGE OPTIONS])中,程序会根据实际情况在所有参数中找到合适的参数应用到页面、页眉和页脚。
4.2封面对象
封面对象可以简单理解为是特殊的页面对象,能在页面对象上使用的参数,在封面对象上也都能使用。
区别在于:
- 封面对象输出的页面不会在TOC中出现
- 封面对象输出的页面不会包含页眉和页脚
cover [PAGE OPTION]...
4.3大纲对象
就是目录的意思,该对象会在输出文档中加入目录。所有能够在页面对象中使用的参数都可以用到大纲对象,并且还有许多的针对大纲对象的参数可以应用到大纲对象中。大纲是通过 XSLT 生成的,这意味着它可以被定义成任何你想看到的样子。可以通过命令行参数 --dump-default-toc-xsl 输出默认的 XSLT 文档,通过 --dump-outline 命令行参数也可指定以 XML 格式输出当前处理文档的目录到指定文件,使用方式
toc [TOC OPTION]...
5. 五类参数(wkhtmltopdf 0.12.5 [带有修补的qt])
5.1 全局参数
参数 说明
--collate 输出多个副本时进行校验(默认设置)
--no-collate 输出多个副本时不进行校验
--cookie-jar
--copies
-d, --dpi
-H, --extended-help 显示更详细的帮助,即更详细版本的 -h 命令
-g, --grayscale 以灰度的形式生成 PDF(彩色的更占空间,另外,有些特殊需求可能也只要灰度的PDF)
-h, --help 显示帮助文档
--htmldoc 以html的形式输出帮助文档
--image-dpi
--image-quality
--license 输出授权信息并退出
--log-level
-l, --lowquality 生成低质量的PDF/PS,对缩小结果文档大小,节约空间有较好帮助
--manpage 输出程序的手册页
-B, --margin-bottom
-L, --margin-left
-R, --margin-right
-T, --margin-top
-O, --orientation
--page-height
-s, --page-size
--page-width
--no-pdf-compression 不对PDF使用无损压缩算法(无损压缩不会对文件造成很大损失,此参数非必要不使用)
-q, --quiet 减少冗长,保持向后兼容性;与使用–log level none相同,即静态模式,不在标准输出中打印任何信息
--read-args-from-stdin 从stdin1读取命令行参数
--readme 输出程序的readme文档
--title
-V, --version 输出版本信息并退出
5.2 大纲参数
注:PDF的大纲会根据HTML的标题和标签自动生成
参数 说明
--dump-default-toc-xsl 输出默认的 TOC xsl 样式的"大纲"到标准输出(文件内容为xml)2
--dump-outline
--outline 在生成的PDF文档中输出“大纲”(默认)
--no-outline 不在PDF中输出“大纲”
--outline-depth
5.3 页面参数
参数 说明
--allow
--background 输出页面背景到PDF文档(这是默认设置)
--no-background 与-background相反
--bypass-proxy-for
--cache-dir
--checkbox-checked-svg
--checkbox-svg
--cookie
--custom-header
--custom-header-propagation 为每个要加载的资源添加由 --custom-header 指定的HTTP头
--no-custom-header-propagation 与--custom-header-propagation相反
--debug-javascript 显示javascript调试输出的信息
--no-debug-javascript 与--debug-javascript相反(这是默认设置)
--default-header 添加一个默认的“头”,在页面的左头显示页面的名字,在页面的右头显示页码4
--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
--keep-relative-links 将相对外部链接保留为相对外部链接
--load-error-handling
--load-media-error-handling
--disable-local-file-access 不允许一个本地文件加载其他的本地文件,使用命令行参数 --allow 指定的目录除外。
--enable-local-file-access 与--disable-local-file-access相反(这是默认设置)
--minimum-font-size
--exclude-from-outline 拒绝加载当前页面到PDF文档的目录和大纲中
--include-in-outline 与--exclude-from-outline相反(这是默认设置)
--page-offset
--password
--disable-plugins 禁止使用插件(这是默认设置)
--enable-plugins 允许使用插件,但插件可能并不工作
--post
--post-file
--print-media-type 用显示媒体类型代替屏幕
--no-print-media-type 与--print-media-type相反(这是默认设置)
-p, --proxy
--proxy-hostname-lookup 使用代理解析主机名
--radiobutton-checked-svg
--radiobutton-svg
--resolve-relative-links 将相对外部链接解析为绝对链接(默认)
--run-sript
--disable-smart-shrinking 禁用WebKit使用智能收缩策略,该策略使像素/dpi(分辨率)比率不为常量
--enable-smart-shrinking 与--disable-smart-shrinking相反(这是默认设置)
--ssl-crt-path
--ssl-key-password
--ssl-key-path
--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
--username
--viewport-size <> 如果有自定义滚动条或CSS属性溢出以模拟窗口大小时,需要设置窗口大小
--window-status
--zoom
5.4 页眉、页脚参数
页眉参数
参数 说明
--header-center
--header-font-name
--header-font-size
--header-html
--header-left
--header-line 在页眉下方显示一条直线分隔正文
--no-header-line 与--header-line相反(这是默认设置)
--header-right
--header-spacing
页脚参数
参数 说明
--footer-center
--footer-font-name
--footer-font-size
--footer-html
--footer-left
--footer-line 在页脚上方显示一条直线分隔正文
--no-footer-line 与--footer-line相反(这是默认设置)
--footer-right
--footer-spacing
共同参数
参数 说明
--replace
5.5 TOC 参数
toc 是 table of content 的缩写,可以理解为目录的意思
参数 说明
--disable-dotted-lines 在目录中不使用虚线
--toc-header-text
--toc-level-indentation
--disable-toc-links 在目录中不生成指向内容锚点的超链接
--toc-text-size-shrink
--xsl-style-sheet
wkhtmltopdf命令参数文档