news 2026/11/2 11:07:02

三行命令跑通HTML转PDF:wkhtmltopdf 纯命令行实操手册

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
三行命令跑通HTML转PDF:wkhtmltopdf 纯命令行实操手册

三行命令跑通HTML转PDF:wkhtmltopdf 纯命令行实操手册

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

网页要存档、报表要打印,复制粘贴总是差一口气?wkhtmltopdf 基于 Qt Webkit 引擎把 HTML 直接渲染成 PDF 和图片,全程无图形界面,服务器上一行命令就能出结果,是无界面PDF生成场景里很省事的命令行工具。

什么情况下你会用到它

  • 📄 网页内容要长期归档
  • 📊 HTML 报表转成可打印 PDF
  • 📚 多个 HTML 合并成一本电子书
  • 🖥️ 服务器无显示环境也要出 PDF

三步跑通:从拿到项目到第一个产出

克隆源码仓库,方便看代码和 C API 封装:

git clone https://gitcode.com/gh_mirrors/wk/wkhtmltopdf

源码编译依赖 Qt Webkit(README 指向独立的打包仓库),只想用的话用包管理器装预编译版最快:

sudo apt-get install wkhtmltopdf

跑第一次转换,把 HTML 生成 PDF:

wkhtmltopdf mypage.html mydocument.pdf

第一个参数是输入 HTML,第二个是输出 PDF,跑完就能看到成品。

高频玩法拆解

合并多文件:一次转换出一整本 PDF

wkhtmltopdf ch1.html ch2.html ch3.html ebook.pdf

多个输入文件按顺序写入最后一个输出文件,中间自动换页,不用手动拼接。

控制纸张与边距:打印排版一步到位

wkhtmltopdf -s A4 -T 20mm report.html report.pdf

-s指定纸张(A4、Letter、A3 等),-T上边距,-B/-L/-R分别是下、左、右,单位写 10mm 这种形式。

生成自动目录:章节一多就有导航

wkhtmltopdf toc book.html book.pdf

toc是内置输入对象,用--xsl-style-sheet my.xsl可替换目录样式,--dump-default-toc-xsl能导出默认样式表供你改。

控制加载时机:等 JavaScript 渲染完再出图

wkhtmltopdf --javascript-delay 1500 page.html page.pdf

--javascript-delay让 JS 多跑 1500 毫秒再渲染;页面没有动态内容时加--disable-javascript更稳。

用之前先看清:优势与局限

  • 部署:纯命令行、不依赖显示服务器,容器里直接跑;wkhtmltopdf -H输出全部参数说明,查用法不用翻网页。
  • 输出:WebKit 完整渲染引擎,CSS 和 JS 都支持,--dump-outline还能把章节大纲直接导出成 XML,方便后续自动化。
  • 局限:引擎是 Webkit 而非 Chromium,较新的 CSS 特性兼容性一般;复杂页面要反复调--javascript-delay、--run-script,出图时机不好卡。

踩过的坑都在这儿

本地 HTML 里的图片样式不显示?→ 默认禁止本地文件互相引用

wkhtmltopdf --enable-local-file-access page.html page.pdf

加上这个参数才放行,注意别在对外服务上常开。

页面内容只渲染了一半?→ 异步数据还没加载完就截了

wkhtmltopdf --javascript-delay 2000 page.html page.pdf

或者用--run-script跑一段自定义 JS,等你的条件满足再结束。

中文显示成方块?→ 系统没装对应字体

给系统装一个中文字体包(如 fonts-noto-cjk);如果 HTML 文件本身不是 UTF-8,转换时用--encoding UTF-8显式指定。

wkhtmltopdf 把「HTML 转 PDF」压缩成一条可以进脚本的命令,目录、纸张、边距都有对应参数。现在就可以 clone 下来跑第一条命令,两分钟拿到第一份 PDF。

延伸阅读:完整参数帮助、C 语言 API 文档

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

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

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

HarmonyOS 3DGS 滤镜切换实战:效果创建、参数管理与资源释放

HarmonyOS 3DGS 滤镜切换实战:效果创建、参数管理与资源释放 实际项目里,滤镜实例最容易出现的问题不是“接口不会调用”,而是状态分散、异步结果乱序、失败后没有回退。切换滤镜时画面稳定且旧效果被释放,需要把能力边界、生命周…

作者头像 李华
网站建设 2026/11/2 10:42:47

C++ 绘制画布标尺

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

作者头像 李华
网站建设 2026/11/2 10:42:47

C++字体库开发之fontconfig使用五

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

作者头像 李华
网站建设 2026/11/2 10:42:06

基于STC89C51的多功能红外避障智能小车设计

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

作者头像 李华
网站建设 2026/11/2 10:38:27

PLFM雷达FPGA实现:高速ADC采样与多端口DDR设计

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

作者头像 李华
网站建设 2026/11/2 10:38:09

PLFM调制原理与FMCW雷达信号处理实战

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

作者头像 李华