还在手动删 PDF 空白页?我写了个小工具,一键搞定

in STEEM CN/中文yesterday

image.png

你有没有过这样的经历?

从扫描仪导出了一份几十页的合同,结果中间夹着一堆空白页;或是下载了一份电子书,每隔几页就是一页空白;又或者把 Word 转成 PDF 后,排版留出了一大堆空白尾页……

删吧,一页一页点,眼花还容易删错;不删吧,发出去显得不专业,文件也白白大了好几 MB。

这事儿烦了我很久。于是这个周末,我干脆自己写了个小工具——PDF 空白页删除工具。双击运行,选个文件,点一下,完事。

它能干什么

一句话:自动找出 PDF 里的空白页并删掉,输出一份干净的新文件。

你不用关心什么叫"着墨比例"、不用懂什么像素渲染——那些都是后台在跑。你只需要:

  1. 双击打开程序
  2. 选要处理的 PDF
  3. 点"预览检测",看看它会删哪些页(红色标出)
  4. 点"处理并保存",收工

整个过程中,你的原文件一个字节都不会动,它永远只生成新文件。这点很重要——我见过太多"一键清理"工具结果把原件改坏了,那种心态崩溃你们懂的。

最让我得意的设计:敏感度可调

市面上不是没有类似工具,但大多数都是"一刀切"——它觉得是空白就是空白,你没得商量。

我的不是。

我做了个敏感度调节,支持两种方式(而且会互相联动):

  • 拖滑块:左边拖更严格,右边拖更激进
  • 手动输入数字:嫌滑块不好控?直接敲 0.050.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 模型辅助完成的,包括这篇文章。

Sort:  

Upvoted! Thank you for supporting witness @jswit.

Loading...

Coin Marketplace

STEEM 0.04
TRX 0.32
JST 0.083
BTC 64414.45
ETH 1745.85
USDT 1.00
SBD 0.44