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

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

http://www.xdnf.cn/news/1033.html

相关文章:

  • python@staticmethod 是什么含义?
  • Coze平台​ 创建AI智能体的详细步骤指南
  • 多源异构网络安全数据(CAPEC、CPE、CVE、CVSS、CWE、ATTCK、D3FEND)的详细解析,包括其作用、数据内容及相互联系
  • 跨越1640年的诗路对话:谢灵运与瓯江山水的古今交响
  • EasyCVR视频汇聚平台安防监控问题排查:GB28181协议摄像头不在线的排查步骤
  • 基于Spring Boot实现文件秒传的完整方案
  • 5565反射内存网络产品
  • 【数据结构_11】二叉树(5)
  • JVM面试题学习
  • 算法复杂度
  • Oracle RMAN同步数据库Active database duplicate
  • ORION:通过视觉-语言指令动作生成的一个整体端到端自动驾驶框架
  • 操作系统线程入门
  • 前端中的浮动、定位与布局
  • 使用纯前端技术html+css+js实现一个蔬果商城的前端模板!
  • Github中项目的公开漏洞合集
  • Spring MVC 执行流程全解析:从请求到响应的七步走
  • 买卖股票的最佳时机(每日一题-简单)
  • SpringBoot中,声明式事务的使用
  • 文字、语音、图片、视频四个模态两两之间(共16种转换方向)的生成技术及理论基础的详细说明及表格总结
  • 【漫话机器学习系列】216.应对高方差(过拟合)的策略详解(Strategies When You Have High Variance)
  • 线上地图导航小程序源码介绍
  • uCOS3实时操作系统(任务切换和任务API函数)
  • MD5和sha1绕过方式总结
  • 第六章.java集合与泛型
  • 街景主观感知全流程(自建数据集+两两对比程序+Trueskill计算评分代码+训练模型+大规模预测)17
  • 冒泡排序详解
  • 使用若依二次开发商城系统-1
  • vue项目通过GetCapabilities获取wmts服务元数据信息并在openlayers进行叠加显示
  • 配置管理CM