本文翻译整理自:https://wkhtmltopdf.org/
文章目录
一、关于 wkhtmltopdf
wkhtmltopdf
和 wkhtmltoimage
是基于QT Webkit渲染引擎的命令行工具,可将HTML转换为PDF和各种图像格式。这些工具完全"无头"运行,不需要显示器或显示服务。
相关链接资源
- 官网:https://wkhtmltopdf.org/docs.html
- github:https://github.com/wkhtmltopdf/wkhtmltopdf
- manual:https://wkhtmltopdf.org/usage/wkhtmltopdf.txt
- C库文档:https://wkhtmltopdf.org/libwkhtmltox
- 下载地址:https://github.com/wkhtmltopdf/packaging/releases
关键功能特性
- 将HTML网页转换为PDF文档
- 将HTML转换为多种图像格式
- 完全无头模式运行
- 支持丰富的命令行选项
- 提供C语言库接口
二、文档说明
目前我们只有wkhtmltopdf的自动生成文档,这与运行wkhtmltopdf -H
命令获得的内容相同。
C语言库的文档在此查看。
三、使用方法
1、基本使用步骤
1、下载预编译二进制文件 或从 源代码构建
2、创建要转换为PDF(或图像)的HTML文档
3、通过工具处理HTML文档。例如,如果想将Google首页保存为PDF:
wkhtmltopdf http://google.com google.pdf
2、高级选项
如果需要为PDF添加目录等更多功能,可以使用丰富的命令行选项。查看自动生成的wkhtmltopdf手册获取完整选项列表。
四、C库集成
如果需要使用C库而不是命令行工具,可以参考 库文档。
五、实际应用示例
这个工具可以用于:
- 生成发票
- 创建生日贺卡
- 网页快照存档
- 任何需要将HTML转换为PDF或图像的场景
六、项目历史
根据git历史记录,Jakob Truelsen在Qt 4.4引入QtWebKit的第二天启动了这个项目。
项目经历了多个发展阶段:
- 2008年:项目创建初期
- 2012-2014年:项目停滞期
- 2014年:0.12.0版本发布
- 2015-2016年:面临WebKit安全问题
- 2017年:尝试QtWebKit 5.212重基
- 2020年:0.12.6稳定版发布
七、技术现状总结
- 使用的Qt 4自2015年起不再受支持
- Qt 5在2016年移除了QtWebkit
- QtWebKit 5.212基于4年前的版本
- 建议考虑使用puppeteer等现代替代方案
八、未来计划
1、发布0.12.7最终版本(修复0.12.6的回归问题)
2、尝试将补丁重基到QtWebKit 5.212
3、将修改提交到Qt和QtWebKit项目
九、使用建议
- 不要使用 wkhtmltopdf 处理不受信任的HTML - 必须清理用户提供的HTML/JS,否则可能导致服务器被完全控制
- 考虑使用 WeasyPrint 或商业工具Prince生成报告
- 对于动态JS网站转换,建议使用puppeteer或其封装工具
十、下载安装
所有下载目前通过GitHub releases托管。
当前稳定版本是0.12.6(2020年6月11日发布),支持多种操作系统和架构:
操作系统 | 支持版本 | 架构/下载链接 |
---|---|---|
Windows | Vista或更高 | 64位 |
macOS | 10.7或更高 | 64位 |
Debian | 9/10/11 | 多种架构支持 |
Ubuntu | 16.04-22.04 | 多种架构支持 |
CentOS | 6/7 | 多种架构支持 |
Amazon Linux | 2 | 多种架构支持 |
十一、常见问题
1、为什么需要带有补丁的Qt静态构建?
某些功能需要使用补丁版Qt,因为这些功能尚未合并到上游。大多数Linux发行版选择编译时不包含这些功能,导致行为差异。
2、为什么没有"通用"Linux构建?
由于不同发行版之间存在以下差异:
- 库版本不同(如libpng、libjpeg)
- OpenSSL版本兼容性问题
- libc不兼容(glibc vs musl)
3、如何在AWS Lambda中使用?
使用Amazon Linux 2/lambda zip包,设置环境变量FONTCONFIG_PATH=/opt/fonts
即可。
4、Symantec报告病毒WS.Reputation.1
?
这是误报,因为Symantec之前没有见过这个文件。
伊织 xAI 2024-04-19(六)