当前位置: 首页 > news >正文

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

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


文章目录

    • 一、关于 wkhtmltopdf
      • 相关链接资源
      • 关键功能特性
    • 二、文档说明
    • 三、使用方法
      • 1、基本使用步骤
      • 2、高级选项
    • 四、C库集成
    • 五、实际应用示例
    • 六、项目历史
    • 七、技术现状总结
    • 八、未来计划
    • 九、使用建议
    • 十、下载安装
    • 十一、常见问题
      • 1、为什么需要带有补丁的Qt静态构建?
      • 2、为什么没有"通用"Linux构建?
      • 3、如何在AWS Lambda中使用?
      • 4、Symantec报告病毒`WS.Reputation.1`?


一、关于 wkhtmltopdf

wkhtmltopdfwkhtmltoimage 是基于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日发布),支持多种操作系统和架构:

操作系统支持版本架构/下载链接
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(六)

相关文章:

  • CSS字体
  • 爬虫学习——Item封装数据与Item Pipeline处理数据
  • 基于 Vue,使用Vuex 或事件总线实现跨组件通信
  • Discuz!与DeepSeek结合:打造智能论坛,提升用户体验与运营效率
  • Go语言中的Context
  • 模拟车辆变道 python 可视化
  • MCP实践第一步--磕磕碰碰搭环境
  • Precision Machine Dynamics/Mechatronics Design - 6
  • 20242817李臻《Linux⾼级编程实践》第8周
  • 精准评估机器学习模型:从混淆矩阵到核心指标的深度解析+面试常见问题及解析(看这篇就够了)
  • Emacs入门篇2:安装evil插件以便vi老用户可以使用VI快捷键来快速使用Emacs
  • 笔记:react中 父组件怎么获取子组件中的属性或方法
  • 进程和线程(1)
  • RIP动态路由,实现两台PC互通三个路由器,两台电脑
  • 8086微机原理与接口技术复习(1)存储器(2)接口
  • Java 多态
  • 怎么安装python3.5-以及怎么在这个环境下安装包
  • 【解决】Vue + Vite + TS 配置路径别名成功仍爆红
  • Linux常见压缩格式详解
  • Python Cookbook-6.7 有命名子项的元组
  • 马上评|遭强奸之后私刑报复,不属正当防卫
  • 今年底,全国新拍电视剧、纪录片将基本实现超高清化
  • “代课老师被男友杀害案”一审开庭,将择期宣判
  • 9厘米,25克!最小最轻的无线陆空两栖机器人来了
  • 上海崇明“人鸟争食”何解?检察机关推动各方寻找最优解
  • 世遗X时尚,七匹狼这场大秀秀出中国文化独特魅力