a474 打开下载页后,在「输入密码」框里填这 4 位,再点它下方的按钮即可下载,不用注册、不用登录。

主界面:5 页大白边扫描件点了一下「检测白边」,逐页量出各自的裁剪框——前 4 页裁成 317×217 / 317×217 / 569×217 / 317×217,整页皆白的第 5 页标成「整页无内容,不裁剪」,没有被裁成一个空页
这个工具解决什么问题
页面尺寸不对,看着比缺页还别扭:内容一页没少,就是四周糊着一圈脏边、或者半页空白。真要去修,几条路都不顺手——阅读器里的「裁剪页面」大多是收费功能,还只能整批套同一个框,扫描件每页边距不一样时裁完有的页切到字;用 Word 打开再导出,版式会被重排一遍、字号和图表经常走形;在线裁剪更直接,得先把整份合同、病历、财务表传上去,而且上传前你根本没法确认「裁 10mm 到底会不会切到装订边」;至于「重新扫描时把边距设小一点」,扫描仪的走纸留白是硬件给的,躲不开。
- 原来的做法:开在线裁剪网站 → 上传整份文件 → 在网页里拖框 → 下载;或者用阅读器的收费功能逐页设同一个边距,再另存
- 用这个工具:右键 PDF 选「百业PDF大师 → 裁剪PDF边距..」(或把文件拖进窗口)→ 选「手动边距」填四边、或选「自动裁白边」点一下「检测白边」→ 在表格里逐页看清裁后尺寸 → 点「保存裁剪结果」另存新文件
- 省下来的:不用上传下载、不用注册账号,没有页数和体积的额度限制;边距填错了改数字就重算、不点保存什么都不写入磁盘,源文件始终不改;自动模式下每一页量的是自己的白边,不是全批共用一个框
技术实现
Windows 桌面程序,.NET Framework 4.8 + WinForms 界面,PDF 处理用 PdfSharp,自动量白边用 PDFium。裁剪走的是改页框:以 PdfDocumentOpenMode.Import 只读打开源文件,新建一个空文档,把页面逐页搬进去,对要裁的页同时写 CropBox 与 MediaBox,再另存为输出文件。全程不渲染、不重编码,所以文字仍是可复制的文字、矢量仍是矢量、内嵌字体和页内超链接原样保留。
- 两种模式归一到同一份数据:手动边距(四边输入,mm 与 pt 双单位、切换即时换算回填)和自动裁白边,最终都算成「页码 → 裁剪矩形」这一张表,保存时只认这张表。所以同一份文件用哪种模式得到同一个框,结果就完全一样
- 自动裁白边是真量出来的:用 PDFium 以 72 DPI 把该页渲染成位图(宽上限约 900 px)→ 灰度化 → 按阈值(默认 245,可调 1~254)找非白内容的包围盒 → 反算四边白边 → 再各留一圈「留边」(默认 3mm,可调 0~20mm)防裁到字 → 得到该页专属裁剪框。实测 5 页扫描件(页面 612×792,内容块各不相同)逐页裁成 317×217 / 317×217 / 569×217 / 317×217,与 pdfium 光栅化算出的真值逐格一致;整页皆白的那页判「不裁剪」并写明原因,而不是裁出一个空页或者报错
- 参数改了立刻重算:留边从 3mm 改成 0,同一页马上从 317×217 变成内容框本身 300×200,改回去又回到 317×217;阈值调低表示「把很灰的像素也算内容」,扫描底纹发灰时用它收窄范围
- 纸张预设 + 九宫格对齐:A4、A5、B5、Letter、便签 90×50mm、名片 90×54mm、自定义宽×高,再选居中或左上等九宫格位置,软件反推出四边边距。实测 612×792 的页居中裁成 A5 是 419.5×595.3,四边裁量左右对称 96.2、上下对称 98.4;便签 90×50(横版)配竖版页面时自动换向成 141.7×255.1,选左上对齐时左边就不裁(裁量 0)
- 带旋转角的页不会裁错方向:页框的坐标轴在 PDF 用户空间(原点在左下),而人眼看的上下左右是旋转之后的。带
/Rotate 90/180/270的页两者不一致,软件把这段换算写成纯函数,四个旋转角逐一钉死(rotate=90 时视觉上裁左边=用户空间裁的是上边)。实测 4 页旋转样本,视觉尺寸 217×137 与 137×217 交替,成品回读的用户空间框宽 217 高 137,与视觉口径正好互换;自动模式的包围盒是从摆正后的渲染图上量的,走的是同一个换算函数 - 应用范围:全部页 / 指定页码(
2,8-10这种写法,支持逗号、区间、乱序、重复,越界项红字列出并忽略)/ 奇数页 / 偶数页。范围外的页页框逐字节不变,只动选中的那些页 - 裁完还能再裁:对
_已裁剪文件再收 12pt,实测得到 293×193,成品页框是两次偏移的累加值——尺寸链式收敛,不是一次性操作 - 三道写盘前守卫 + 一条越界守卫:四边之和超过页宽或页高(会把页裁没)时该行红字写明「超出页宽/页高」,范围内的页全都不合则保存置灰;输出路径与源文件同名同路径直接拒绝;输出名撞上其他已有文件先弹确认框问要不要覆盖;保存瞬间重新打开源文件核对页数,文件在界面上停留期间被别人改过就拒绝写入
- 读不了的当场说清:加密文件与损坏文件都按字节判——打开失败后扫文件头和文件尾各 64 KB 是否含
/Encrypt加密字典,有则提示「文件已加密,请先用其他工具去除密码」,没有则提示「文件损坏或不是有效的 PDF」;0 页文件单独提示。三种情况保存按钮同时置灰。内容已经贴满纸边的页则判「无白边可裁」,保存置灰,不会产出一个「什么都没改」的白跑文件 - 自动模式缺组件也能用:PDFium 是原生 dll,万一丢了或位数不匹配,软件捕获加载异常,把「自动裁白边」单选置灰并写明中文原因,模式自动落回手动边距,手动裁剪链路完整可用、照样能保存,不弹异常框、不崩。这条专门做了实测(临时改名移走 dll 整轮跑,11 项断言全过)
- 大文件走后台线程:40 页 / 148.5 MB 的扫描件,窗口与页面信息 6.5 秒出来,整批「检测白边」(40 页逐页渲染测量)2.2 秒跑完,期间窗口标题不带「未响应」;151.1 MB 的文件载入 5.5 秒不假死
- 资源管理器右键菜单:写
HKCU\Software\Classes下的静态注册表动词(百业PDF大师 → 裁剪PDF边距..,命令带%V把路径传进来),免管理员权限、不用注册 COM 组件;与同系列工具共用一个分组菜单,注册和注销都只动自己那一个动词,不会把兄弟工具的菜单项一起删掉(这条在真资源管理器里多选 2 个文件跑过端到端)
操作教程
- 第 1 步:把 PDF 放进软件:在资源管理器里选中 PDF 点右键,选「百业PDF大师 → 裁剪PDF边距..」;也可以点「选择PDF」按钮,或者把文件从资源管理器直接拖进窗口(本工具一次处理一个 PDF:在资源管理器里多选文件时每个文件各开一个窗口,若一次只收到多个文件则载入第一个并给出提示) 预期:窗口上方显示「共 N 页 · 大小 · 首页尺寸(按显示方向)」,下方表格逐页列出原尺寸、旋转角
- 第 2 步:选裁剪方式:手动边距:「裁剪方式」选「手动边距」,单位可在 mm 与 pt 之间切换(切换时数值即时换算回填),填上/下/左/右四边,点「应用边距」;也可以改用「纸张」下拉选 A4/A5/B5/Letter/便签/名片/自定义,配「对齐」九宫格后点「按纸张裁剪」 预期:预览行变成绿字「已设置 手动边距(上10 下20 左30 右40 pt):共 5 页,其中 5 页将被裁剪」,表格「裁剪后」与「裁掉」两列逐行算出数值
- 第 3 步:或者选自动裁白边,点「检测白边」:「裁剪方式」改选「自动裁白边」,手动那几行会收起、出现「白色阈值」和「留边(mm)」两个参数,点「检测白边」让软件逐页量内容包围盒;扫描件底纹发灰时把阈值调低再点一次 预期:预览行变成「已设置 自动裁白边(阈值 245,留边 3mm):共 5 页,其中 4 页将被裁剪」,每页的裁掉数值各不相同,空白页标注不裁剪的原因
- 第 4 步:限定应用范围,核对输出文件名:只想裁其中几页时,把「应用范围」改成指定页(写
2,8-10)或奇/偶数页;「输出文件」默认是源文件同目录的<源文件名>_已裁剪.pdf,可点「浏览...」换位置换名字 预期:范围外的行状态列变成「范围外」、页框保持原样;输出名撞上已有文件会先弹确认框,和源文件同名则直接拒绝 - 第 5 步:点「保存裁剪结果」:保存成功后可勾选「完成后打开输出文件所在目录」直接跳到结果文件夹;界面上参数还在,想再收一刀就改数字重新保存 预期:新文件出现在输出目录,页数与源文件相同,源文件原封不动

刚载入的 5 页扫描件:还没设任何参数,「裁剪后」列等于原尺寸 612×792,「裁掉」列是「—」,状态列写「未裁剪」,保存按钮置灰——此时点保存只会产出一个白跑的文件

四边填 10/20/30/40 pt 点「应用边距」后:每页 612×792 ⇒ 542×762,「裁掉(左,右,上,下)pt」列如实写 30,40,10,20,状态列「手动」,保存按钮亮起

同一份文件切到自动模式:4 页各量出自己的白边(第 1 页裁掉 91.5,203.5,383.5,191.5,第 3 页是 21.5,21.5,263.5,311.5),第 5 页整页皆白 ⇒「整页无内容,不裁剪」

保存后回读成品各页页框:第 1 页 CropBox = (91.496, 191.496, 408.504, 408.504),上下按 PDF 的 y 轴向上换算无误,空白第 5 页原框未动;底部那行提示就是这个工具的边界——只改页框、不删内容,成品体积与源文件接近
第一次用想开右键菜单,点工具栏「右键菜单」按钮即可集成,再点一次选移除就能清理干净,且不影响同系列其它工具;移动了软件所在的文件夹后,在新位置再点一次按钮刷新路径。同系列还有 PDF合并大师、PDF拆分器、PDF旋转工具、PDF删页工具、PDF提取页面 和 PDF页面重排,共用同一个右键菜单分组。裁完觉得页面还是多,就接着用删页或拆分。
常见问题
/Rotate 转好之后的样子,带 90/180/270 旋转的页两者不一致。软件把这段换算写成独立纯函数并对四个旋转角做了断言:rotate=90 的页视觉上裁左边,落到用户空间裁的是上边。实测 4 页旋转样本,界面显示的视觉尺寸 217×137 与 137×217 交替,成品回读的用户空间框宽 217 高 137,与视觉互换,方向正确。by.pdf.crop.exe(界面与裁剪本体,依赖已合并进去)、pdfium.dll(自动裁白边用的渲染引擎,原生组件没法合并进 exe)、cfg.ini(配置)。同系列其它工具是单文件,这个多一个 dll 就是为了换「自动量白边」这项能力。如果 dll 丢了或位数不匹配,软件不会崩也不会弹异常框:「自动裁白边」那一项直接置灰、旁边写明中文原因,模式自动落回手动边距,手动填边距裁剪照常能用、照常能保存。软件截图

载入 5 页扫描件:表格逐行列出页码、原尺寸(pt)、旋转角、裁剪后尺寸、裁掉边距、状态,未设参数时保存按钮置灰

四边 10/20/30/40 pt:每页裁成 542×762,「裁掉」列写明左30 右40 上10 下20,预览行绿字标出 5 页将被裁剪

切到自动模式点「检测白边」:逐页量出自己的内容包围盒,裁后 317×217 / 317×217 / 569×217 / 317×217,空白页标「整页无内容,不裁剪」

另存为 _已裁剪 新文件,源文件不动;底部提示就是这个工具的能力边界——只改页框不删内容,成品体积与源文件接近

载入需要打开密码的文件时立刻说明原因,保存按钮置灰,进程与窗口一切正常
技术实现与后续维护
程序集 by.pdf.crop,主 exe 单文件发布(PdfSharp、界面库、授权组件已合并进去),外加一份原生 pdfium.dll 和一份 cfg.ini。运行环境是 .NET Framework 4.8,Windows 10/11 一般已经具备。授权与试用计时按机器码在本机完成,不上传文件内容,也不读取文件之外的个人数据。出厂前跑了三轮验收:一轮无界面自检(mm↔pt 往返、四个旋转角的四角换算、页码范围解析、真实裁剪后 CropBox 回读、二次裁剪链式收敛、保存守卫、加密/损坏/0 页判定、PDFium 在场与不在场两条路径含中文目录回归、右键菜单注册与注销与兄弟动词安全,共 108 项断言),一轮模拟真实点击的界面回归(载入→手动边距→范围→越界守卫→纸张预设→自动检测逐页对拍→保存回读→二次裁剪→旋转页→三类异常文件,共 86 项),一轮真资源管理器多选文件的右键菜单端到端。这些在混淆后的发布版上重跑一遍仍然全绿,并在只放那 3 个文件的干净目录里实跑过「dll 在场」与「dll 不在场」两条完整流程。
后续可扩展的方向:裁完把页内容真正栅格化或删掉被裁区域的对象以压缩体积(现在只改页框)、按新页框重建书签目录、多文件批处理(一个目录跑完)、把常用边距存成模板下次一键套用、加一个「预览图上看拖框」的可视化裁剪模式。这些都在现有的「页码→裁剪矩形」数据模型和页面搬运链路上,不需要改动界面结构。
可以定制(二次开发)
这个工具按「一个痛点一个小工具」的思路做,界面和功能都可以按你的实际流程改:比如固定输出目录、按部门命名规则自动改名、扫描后自动按「装订边留 15mm、其余三边留 5mm」的模板裁、和拆分/删页/提取/旋转/重排/合并串成一条流水(先拆→裁白边→删广告页→调顺序→再合回去),或者做成一次跑完一个目录的批量脚本版。需要改动的联系方式见站内「联系我们」页面的 QQ 客服,也可以在本文下方留言说明场景。定制合作会连同可编译的工程一起交付。
使用说明与免责声明
请只对你拥有合法权利的文件进行裁剪等操作,裁改他人报告、教材、图纸的页面范围可能涉及版权与保密义务,责任由操作者自行承担。特别提醒:本工具的裁剪是「改页框」而不是「删内容」,被裁掉的区域在成品 PDF 里仍然存在,只是不显示、不打印——不要用它的裁剪功能来抹除需要彻底销毁的敏感信息。工具按「读源文件、写新文件」的方式工作,不会改动任何源文件;但输出文件如果与已有文件重名,确认后会被覆盖,重要资料建议先备份或换一个输出目录再处理。本工具按「现状」免费提供,因使用本工具造成的数据损失,作者不承担责任。
a474 打开下载页后,在「输入密码」框里填这 4 位,再点它下方的按钮即可下载,不用注册、不用登录。
