还在手动删 PDF 空白页?我写了个小工具,一键搞定
你有没有过这样的经历?
从扫描仪导出了一份几十页的合同,结果中间夹着一堆空白页;或是下载了一份电子书,每隔几页就是一页空白;又或者把 Word 转成 PDF 后,排版留出了一大堆空白尾页……
删吧,一页一页点,眼花还容易删错;不删吧,发出去显得不专业,文件也白白大了好几 MB。
这事儿烦了我很久。于是这个周末,我干脆自己写了个小工具——PDF 空白页删除工具。双击运行,选个文件,点一下,完事。
它能干什么
一句话:自动找出 PDF 里的空白页并删掉,输出一份干净的新文件。
你不用关心什么叫"着墨比例"、不用懂什么像素渲染——那些都是后台在跑。你只需要:
- 双击打开程序
- 选要处理的 PDF
- 点"预览检测",看看它会删哪些页(红色标出)
- 点"处理并保存",收工
整个过程中,你的原文件一个字节都不会动,它永远只生成新文件。这点很重要——我见过太多"一键清理"工具结果把原件改坏了,那种心态崩溃你们懂的。
最让我得意的设计:敏感度可调
市面上不是没有类似工具,但大多数都是"一刀切"——它觉得是空白就是空白,你没得商量。
我的不是。
我做了个敏感度调节,支持两种方式(而且会互相联动):
- 拖滑块:左边拖更严格,右边拖更激进
- 手动输入数字:嫌滑块不好控?直接敲
0.05、0.10,回车应用
默认值是 95%——也就是"一页要是 95% 以上都是白的,就当我空白页删了"。这个阈值是我反复试出来的甜点,绝大多数文档用默认值就刚刚好。
但如果你发现它删多了,把数字调小一点(比如 0.02,只删几乎全白的);要是删少了,调大一点(比如 0.10)。所见即所得,先预览再处理,绝不会盲删。
它是怎么判断"空白"的
这里稍微说点技术(不感兴趣可以直接跳过)。
判断一页是不是空白,最靠谱的办法不是去读里面的文字,而是把整页渲染成一张图片,数一下有多少像素是有颜色的。一页要是 99% 都是白的像素,那它还能不是空白页?
这个方法有个额外的好处:它不挑文档类型。扫描件、图片型 PDF、加密排版的内容,统统都能识别。比起靠文字提取来判断,这种"像素级"的判断准多了。
用起来到底有多简单
我把整个程序打包成了一个 exe 文件,40MB 左右。
不用装 Python,不用配环境,不用命令行。拷到任何一台 Windows 电脑上,双击就能跑。第一次启动会慢个三五秒(要解压一下,正常现象),之后就很顺了。
我特意加了个"预览检测"功能——在真正动手删之前,先让你看清楚每一页的着墨比例、哪些会被删。红色一行行列出来,确认没问题再点保存。这一步我建议每个人每次都用,肉眼复核一下,心里踏实。
几个你可能想问的
会删错吗?
有预览功能兜底,删之前你能看到每一页的判定结果。而且原文件不动,就算真删错了,原件还在。
删完文件变小吗?
会。空白页本身占的地方不大,但扫描件里那些纯白页有时也带着图像数据,删掉后体积能瘦一圈。
支持多少页?
多少页都行。我测过几十页的文档,几秒钟搞定。几百页的也能跑,就是预览的时候多等一会。
收费吗?
不收,自己写的,自己用顺手了就分享出来。
最后
这工具不大,但解决的是个实实在在的、每周都会遇到的小麻烦。我写它的初衷就是不想再手动翻 PDF 找空白页了——既然计算机能干,凭什么让人干。
希望对你也有用。
下载地址:城通网盘
网盘密码:0033
解压密码:PDF空白页删除工具.7z
关于这件作品
这个工具用 Python 开发,核心依赖 PyMuPDF 和 NumPy,GUI 基于 tkinter,由 PyInstaller 打包成单文件 exe。
整个开发过程——从需求梳理、架构设计、编码,到测试驱动开发(TDD)、调试一个棘手的 DLL 加载问题、最后打包成可执行文件——都是在 ZCode 智能编程助手里,由 GLM-5.2 模型辅助完成的,包括这篇文章。

Upvoted! Thank you for supporting witness @jswit.