news 2026/11/2 1:44:52

wkhtmltopdf 快速上手:3 个系统 10 分钟把 HTML 转成 PDF

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
wkhtmltopdf 快速上手:3 个系统 10 分钟把 HTML 转成 PDF

wkhtmltopdf 快速上手:3 个系统 10 分钟把 HTML 转成 PDF

【免费下载链接】wkhtmltopdfConvert HTML to PDF using Webkit (QtWebKit)项目地址: https://gitcode.com/gh_mirrors/wk/wkhtmltopdf

当你的脚本要把前端生成的报表 HTML 导出成 PDF 发给客户时,你需要的不是一台浏览器,而是一条命令。wkhtmltopdf 干的就是这件事:它基于打了补丁的 Qt Webkit,在后台把 HTML 无头渲染成 PDF 文件。下文带你用 10 分钟把这套工具装好并跑通第一条转换命令。

工具速览

wkhtmltopdf 是把 HTML 转成 PDF 的命令行工具,同一安装包还附带 wkhtmltoimage 用于导出图片。它的原理一句话:借用浏览器渲染引擎在后台完成排版,不需要占用桌面。典型用途包括报表生成、网页存档和批量文档转换。

快速上手

下面按系统拆分,目标只有一个:让wkhtmltopdf --version能打印出版本号。

Windows 下安装 wkhtmltopdf

  1. 打开仓库内的 docs/downloads.md,找到 Windows 安装包(.exe)的下载链接,推荐 64 位版本。
  2. 双击安装包按向导完成,安装程序会自动把命令加进 PATH。
  3. 验证安装:
wkhtmltopdf --version

能打印出wkhtmltopdf 0.12.6 (with patched qt)这类信息就说明可以用了。注意:个别杀毒软件会误报安装包为WS.Reputation.1,这是已知误报,只要从官方列表下载即可放心。

macOS 下安装 wkhtmltopdf

有 Homebrew 的话一条命令:

brew install wkhtmltopdf

没有 Homebrew 就从下载列表拿 .pkg 安装器双击安装。验证方式相同:

wkhtmltopdf --version

注意:如果 brew 里找不到这个包或版本过旧,优先用官方 .pkg 安装器。

Linux 下安装 wkhtmltopdf

发行版多,最稳的路线是装官方为对应发行版预编译好的包。

  1. 从 docs/downloads.md 找到你发行版对应的 .deb / .rpm。
  2. 安装:
# Debian/Ubuntu 系列(以 Ubuntu 22.04 为例) sudo dpkg -i wkhtmltox_0.12.6.1-2.jammy_amd64.deb sudo apt-get install -f # 补齐缺失的依赖 # RHEL/CentOS/AlmaLinux 系列 sudo rpm -i wkhtmltox-0.12.6.1-2.almalinux8.x86_64.rpm
  1. 验证:wkhtmltopdf --version。

⚠️ 如果列表里没有你的发行版版本,用同一发行版较老 LTS 的官方包,通常能直接兼容。

核心用法

以下 5 条命令由简到繁,可以直接复制着跑。

1. 转换本地文件。最基础形态,零参数。

wkhtmltopdf input.html output.pdf

一行进一行出,拿到第一份 PDF。

2. 转换网页。把 URL 直接当输入。

wkhtmltopdf https://www.example.com page.pdf

默认不开启 JavaScript,动态页面可能渲染不全,排障一节有解法。

3. 指定纸张、方向和页边距。

wkhtmltopdf --page-size A4 --orientation Landscape --margin-top 20mm input.html out.pdf # --page-size 纸张大小,如 A4、Letter # --orientation 横向 # --margin-top 上边距,单位 mm

得到 A4 横向、上边距 20mm 的文档。

4. 页脚加页码。

wkhtmltopdf --footer-center "第 [page] / [topage] 页" input.html out.pdf

[page]和[topage]是当前页与总页数的占位宏,会在输出时被替换。

5. 封面 + 目录 + 正文合成一份。

wkhtmltopdf cover.html toc page1.html page2.html report.pdf

对象按命令行出现的顺序排列:先封面、再目录、后正文,目录由页面标题标签自动生成。

场景化排障

真实项目里最常见的四种情况,每个都按“现象 → 处理 → 验证”给出。

PDF 里中文显示为方块或空白

现象:中文字体缺失,输出里汉字变成方块。

# Debian/Ubuntu sudo apt-get install -y fonts-wqy-zenhei # CentOS/RHEL sudo yum install -y wqy-zenhei-fonts fc-cache -f && fc-list | grep -i cjk # 刷新字体缓存并确认已识别

验证:重新转换,中文正常显示。

无桌面环境报 Unable to init server: Could not contact X display

现象:容器或 SSH 会话里没有图形环境,转换直接失败。

sudo apt-get install -y xvfb xvfb-run -a wkhtmltopdf input.html output.pdf # 用虚拟显示跑

验证:命令正常退出并生成 output.pdf。

网页动态内容缺失

现象:页面由 JavaScript 生成内容,导出的 PDF 是空壳或不完整。

wkhtmltopdf --enable-javascript --javascript-delay 1000 https://www.example.com out.pdf # --javascript-delay 让 JS 执行 1000 毫秒后再打印

验证:PDF 里的动态内容与浏览器中看到的一致。

大图片页面转换慢

现象:页面挂了大量图片,命令长时间没有产出。

wkhtmltopdf --no-images input.html output.pdf # 不加载图片

验证:转换时间明显缩短,需要图片时再去掉该参数。

快速参考

最常用命令与参数汇总如下:

命令 / 参数说明示例 / 默认值
wkhtmltopdf <输入> <输出>基础转换wkhtmltopdf a.html b.pdf
--page-size <size>纸张大小--page-size A4
--orientation <方向>横纵向--orientation Landscape
--margin-top/-left/-right/-bottom四边页边距默认 10mm
--no-images不加载图片默认加载
--enable-javascript启用 JS默认禁用
--javascript-delay <msec>等待 JS 执行--javascript-delay 1000
-V, --version查看版本wkhtmltopdf --version

完整参数说明在 docs/usage/wkhtmltopdf.txt,各平台安装包列表见 docs/downloads.md。想进一步深入渲染与转换流程,可以git clone https://gitcode.com/gh_mirrors/wk/wkhtmltopdf拉取源码,从src/lib/converter.cc开始读起。

【免费下载链接】wkhtmltopdfConvert HTML to PDF using Webkit (QtWebKit)项目地址: https://gitcode.com/gh_mirrors/wk/wkhtmltopdf

创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考

版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/11/2 1:44:41

互信息量与离散平稳信源

互信息量与离散平稳信源 本篇包含&#xff1a;第2章剩余2.5.3互信息量完整内容&#xff1b;第3章第一部分&#xff1a;离散平稳信源、N维序列信源、平均符号熵、极限熵 一、事件互信息量&#xff08;瞬时互信息&#xff09; 1.定义* 对于两个离散随机事件 x、y&#xff0c;观测…

作者头像 李华
网站建设 2026/11/2 1:43:36

Python ai-engine 包详解与实战案例

1. 引言ai-engine 是一个面向 Python 开发者的 AI 能力集成包&#xff0c;旨在把大语言模型调用、提示词管理、工具调用、记忆存储等能力封装成简洁易用的接口。它适合希望在项目中快速接入 AI 能力、又不想直接面对各家模型厂商复杂 SDK 的开发者。本文将从功能特性、安装方式…

作者头像 李华