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

本文翻译整理自: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日发布),支持多种操作系统和架构:

操作系统支持版本架构/下载链接
WindowsVista或更高64位
macOS10.7或更高64位
Debian9/10/11多种架构支持
Ubuntu16.04-22.04多种架构支持
CentOS6/7多种架构支持
Amazon Linux2多种架构支持

十一、常见问题


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(六)

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

编程乐园

请我喝杯伯爵奶茶~!

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值