前言

最近开发中,有接口需要将一个网页页面完整的转换为PDF文件,以下便是我所使用过的安装方法、使用方法
⚠️:对于样式比较复杂、且图片比较多的页面,该工具可能转换效果不理想,推荐使用在不需要转换很复杂的页面上
⚠️:此片文章基于Windows操作系统
相关文章(本文与下面两篇有密切关系):


一、安装方法

1、wkthmltox是什么?

wkhtmltox 是一个开源的命令行工具,可以将 HTML 转换成 PDF文件或各种格式的图片;支持包括 Windows、Linux、MacOS 等多种操作系统;支持包括PHP、Java、Python等多种编程语言调用
⚠️:可能会出现转换后存在难以解决的乱码问题(没有什么工具是能十全十美的)

2、下载wkhtmltox

1、官网地址:https://wkhtmltopdf.org/ 或下载网址:https://wkhtmltopdf.org/downloads.html
2、根据使用的操作系统自行选择版本(由于该工具久未更新,建议下载最新版本);本文准备的是Windows版本:wkhtmltox-0.12.6-1.msvc2015-win64.exe

image-20231107095107215

3、安装wkhtmltox

  • 解压下载到的安装包
  • 双击安装包
  • 点击同意
  • 选择路径,我的是C:\wkhtmltox\
  • 接着一路next即可

4、查看安装版本

1
2
3
4
5
6
//在cmd黑窗口中使用以下命令
wkhtmltopdf -V

//输入命令后显示安装版本即安装成功
C:\>wkhtmltopdf -V
wkhtmltopdf 0.12.6 (with patched qt)

5、安装位置

1
2
3
4
5
//安装成功后会有两种功能,分别是`html转pdf`以及`html转图片`;它们对应的安装位置如下

1、html转pdf:C:\wkhtmltox\wkhtmltopdf\bin\wkhtmltopdf.exe
~
2、html转图片:C:\wkhtmltox\wkhtmltopdf\bin\wkhtmltoimage.exe

6、配置环境变量

说明:为了cmd黑窗口可以正常使用该工具、需要配置一下环境变量,操作步骤如下
1、右键桌面“此电脑”,点击“属性”
2、点击“高级系统变量”,点击“环境变量”
3、在系统变量栏中找到变量“Path”,点击编辑
4、将wkhtmltox安装目录加入“Path”变量
5、我的目录位置为C:\wkhtmltox\wkhtmltopdf\bin
6、加入后点击确定即可



二、使用方法

1、使用模版

PDF转换测试

# 模版
wkhtmltopdf 页面路径 /目录/转换文件名称
wkhtmltoimage 页面路径 /目录/转换文件名称

2、使用用例

# html转pdf
wkhtmltopdf https://wkhtmltopdf.org/downloads.html C:/Downloads/test.pdf

效果如下图:

image-20231107113850380

# html转图片
wkhtmltopdf https://wkhtmltopdf.org/downloads.html C:/Downloads/test.png

效果如下图:

image-20231107113938414




三、参数介绍

相关参数命令如下,具体更详细的参数命令可以自行查看官方网站中的参数文档

全局选项

–collate 打印多份时进行校验(默认)
–no-collate 打印多个文件时不要进行校验
–cookie-jar 从提供的cokkie-jar文件中读取和写入cookie
–copies 要打印到PDF文件中的份数(默认为1)
-d, --dpi 明确更改dpi(这对基于X11的系统没有影响)(默认为96)
-H, --extended-help 命令帮助符,展示全部命令
-g, --grayscale PDF将以灰度形式生成
–htmldoc 输出程序html帮助
-image-dpi 嵌入图像时,将其缩小到此dpi(默认为600)
–image-quality jpeg压缩图像时使用此质量(默认值94)
–license 输出许可证信息并退出
–log-level 将日志级别设置为:无(none)、错误(error)、警告(warn)或信息(默认信息info)
-l, --lowquality 生成较低质量的pdf/ps。有助于缩小结果文档空间
–manpage 输出程序手册页
-B, --margin-bottom <> 设置页面底部边距
-L, --margin-left <> 设置页面左边距(默认为10mm)
-R, --margin-right <> 设置页面右边距(默认为10mm)
-T, --margin-top <> 设置页面的上边距
-O, --orientation <> 将方向设置为横向或纵向(默认纵向)
–page-height <> 页高
-s, --page-size <> 将纸张大小设置为:A4、字母等。(默认A4)
–page-width <> 页宽
–no-pdf-compression 不要对pdf对象使用无损压缩
-q, --quiet 减少冗长,保持向后兼容性;与使用–log level none相同
–read-args-from-stdin 从stdin读取命令行参数
–readme 输出程序介绍
–title 生成的pdf文件的标题(如果未指定,则使用第一个文档的标题)
–use-xserver 使用X服务器(没有X11,一些插件和其他东西可能无法工作)
-V, --version 输出版本信息并退出

大纲选项

–dump-default-toc-xsl 将默认的TOC xsl样式表转储到stdout
–dump-outline 将大纲转储到文件中
–outline 将大纲放入pdf(默认)
–no-outline 不将大纲放入pdf
–outline-depth 设置轮廓的深度(默认值4)

页面选项

–allow 允许加载指定旧版本的一个或多个文件(可重复)
–background 打印背景(默认)
–no-background 不打印背景
–bypass-proxy-for 绕过主机代理(可重复)
–cache-dir Web缓存目录
–checkbox-checked-svg 在呈现复选框时使用此SVG文件
–checkbox-svg 在呈现未选中的复选框时使用此SVG文件
–cookie 设置一个额外的cookie(可重复),值应为url编码
–custom-header 设置额外的HTTP头(可重复)
–custom-header-propagation 为每个资源请求添加由–custom header指定的HTTP头
–no-custom-header-propagation 不要为每个资源请求添加由–custom header指定的HTTP头
–debug-javascript 显示javascript调试输出
–no-debug-javascript 不显示javascript调试输出(默认)
–default-header 添加一个默认的页眉,左边是页面名称,右边是页码,这是–header left=‘[webpage]’–header right=‘[page]/[toPage]’–顶部2厘米–页眉行的缩写
–encoding 为输入设置默认文本编码
–disable-external-links 不要链接到远程网页
–enable-external-links 创建指向远程网页的链接(默认)
–disable-forms 不要将HTML表单字段转换为pdf表单字段(默认)
–enable-forms 将HTML表单字段转换为pdf表单字段
–images 加载或打印图像(默认)
–no-images 不加载或打印图像
–disable-internal-links 不要建立本地链接
–enable-internal-links 创建本地链接(默认)
-n, --disable-javascript 不允许网页运行javascript
–enable-javascript 允许网页运行javascript(默认)
–javascript-delay 等待几毫秒,等待javascript完成(默认值为200)
–keep-relative-links 将相对外部链接保持为相对外部链接
–load-error-handling 指定如何处理未能加载的页面:中止(abort)、忽略(ignore)或跳过(skip)(默认中止)
–load-media-error-handling 指定如何处理无法加载的媒体文件:中止(abort)、忽略(ignore)或跳过(skip)(默认忽略)
–disable-local-file-access 不允许将本地文件转换为读取其他本地文件,除非使用–allow(默认值)明确允许
–enable-local-file-access 允许将本地文件转换为读取其他本地文件
–minimum-font-size 最小字体大小
–exclude-from-outline 不要将该页包含在目录和大纲中
-include-in-outline 将页面包括在目录和大纲中(默认)
–page-offset 设置起始页码(默认为0)
–password HTTP身份验证密码
–disable-plugins 禁用已安装的插件(默认)
–enable-plugins 启用已安装的插件(插件可能无法工作)
–post 添加额外的帖子字段(可重复)
–post-file 发布附加文件(可重复)
–print-media-type 使用打印媒体类型而不是屏幕
–no-print-media-type 不使用打印介质类型而不是屏幕(默认)
-p, --proxy 使用代理
–proxy-hostname-lookup 使用代理解析主机名
–radiobutton-checked-svg 在呈现选中的单选按钮时使用此SVG文件
–radiobutton-svg 在呈现未选中的单选按钮时使用此SVG文件
–resolve-relative-links 将相对外部链接解析为绝对链接(默认)
–run-script 在页面加载完成后运行额外的javascript(可重复)
–disable-smart-shrinking 禁用WebKit使用的使像素/dpi比率非恒定的智能收缩策略
–enable-smart-shrinking 启用WebKit使用的智能收缩策略,使像素/dpi比率非恒定(默认)
–ssl-crt-path OpenSSL PEM格式的ssl客户端证书公钥的路径,可选地后跟中间ca和受信任证书
–ssl-key-password ssl客户端证书私钥的密码
–ssl-key-path OpenSSL PEM格式的ssl客户端证书私钥路径
–stop-slow-scripts 停止缓慢运行的Java脚本(默认)
–no-stop-slow-scripts 不要停止缓慢运行的Java脚本
–disable-toc-back-links 不从节头链接到toc(默认)
–enable-toc-back-links 从节头到目录的链接
–user-style-sheet 指定要随每页加载的用户样式表
–username HTTP身份验证用户名
–viewport-size <> 如果有自定义滚动条或css属性溢出来模拟窗口大小,请设置视口大小
–window-status 等到窗户。在呈现页面之前,状态等于此字符串
–zoom 使用此缩放因子(默认为1)

页眉和页脚选项

–footer-center 居中的页脚文本
–footer-font-name 设置页脚字体名称(默认为Arial)
–footer-font-size 设置页脚字体大小(默认为12)
–footer-html 添加一个html页脚
–footer-left 左对齐页脚文本
–footer-line 在页脚上方显示行
–no-footer-line 不在页脚上方显示行(默认)
–footer-right 右对齐的页脚文本
–footer-spacing 页脚和内容之间的间距(mm)(默认值为0)
–header-center 居中标题文本
–header-font-name 设置标题字体名称(默认为Arial)
–header-font-size 设置页眉字体大小(默认为12)
–header-html 添加一个html标题
–header-left 左对齐标题文本
–header-line 标题下方的显示行
–no-header-line 无标题行不显示标题下方的行(默认)
–header-right 右对齐标题文本
–header-spacing 标题和内容之间的间距(mm)(默认为0)
–replace 将[name]替换为页眉和页脚中的值(可重复)

TOC选项

–disable-dotted-lines 不要在toc中使用虚线
–toc-header-text toc的标题文本(默认目录)
–toc-level-indentation 对于toc中的每一级标题,按此长度缩进(默认为1em)
–disable-toc-links 不要从toc链接到章节
–toc-text-size-shrink 对于toc中的每一级标题,字体按此系数缩放(默认值为0.8)
–xsl-style-sheet 使用提供的xsl样式表打印目录




借鉴链接

wkhtmltopdf 安装使用 笔记
更多关于wkhtmltox扩展工具的知识持续更新中!!!



声明

借鉴部分均注明了原文出处,可在文章的`借鉴链接`处获取原文出处
文中若内容有涉及原版权,请邮件联系elvin-chen@qq.com,涉及的相关文章或内容将会及时更改或取消发布