wkhtmltopdf - HTML转PDF/图像命令行工具

发布于:2025-04-22 ⋅ 阅读:(20) ⋅ 点赞:(0)

本文翻译整理自:https://wkhtmltopdf.org/



一、关于 wkhtmltopdf

wkhtmltopdfwkhtmltoimage 是基于QT Webkit渲染引擎的命令行工具,可将HTML转换为PDF和各种图像格式。这些工具完全"无头"运行,不需要显示器或显示服务。


相关链接资源


关键功能特性

  • 将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 TruelsenQt 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(六)


网站公告

今日签到

点亮在社区的每一天
去签到