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

主界面:5 页 612×792 的扫描件选「按目标纸张」,纸张下拉选 A5 后宽高自动回填成 419.53×595.28 pt,「等比适应」算出缩放比 0.686,逐页显示 612×792 ⇒ 419.5×595.3,状态列写明「将缩放到目标」——保存之前每一页会变成多大已经全部摆在眼前
这个工具解决什么问题
「缩印」这件事在桌面上一直没有轻入口。打印驱动里那个「每张 2 页 / 缩放至可打印区域」只在打印的那一刻改变成像,存下来的 PDF 还是原尺寸,换台机器又缩一次;阅读器里的「调整大小」多是收费功能,而且常常只改页面框、内容不跟着走,缩完发现半页内容被留在了纸外;用 Word 打开再导出,版式会被重排一遍、字号和图表经常走形;在线缩放网站最省事,但得先把整份合同、病历、财务表传上去,而且上传之前你根本没法确认它到底会变成多大。
- 原来的做法:打开在线网站 → 上传文件 → 选一个预设 → 下载回来 → 用阅读器核对尺寸对不对 → 不对就重来;或者在打印对话框里勾「缩放到页面」,但那只是打印时临时缩放,文件本身没变
- 用这个工具:右键 PDF 选「百业PDF大师 → 页面缩放..」(或把文件拖进窗口)→ 选「按百分比」填 70,或选「按目标纸张」挑 A5/便签/名片 → 表格里逐页看清 612×792 会变成 428.4×554.4 → 点「保存缩放结果」另存新文件
- 省下来的:不用上传下载、不用注册账号,没有页数和体积的额度限制;数字填错了改一下就重算,不点保存什么都不写盘,源文件始终不改;页面尺寸和内容乘的是同一个矩阵,不会出现「框缩了、内容没缩」的错位文件
技术实现
Windows 桌面程序,.NET Framework 4.8 + WinForms 界面,PDF 处理用 PdfSharp。缩放走的是几何改写:以 PdfDocumentOpenMode.Import 只读打开源文件,逐页把内容流最外层包上一对图形状态指令和一个矩阵 q sx 0 0 sy tx ty cm …原内容… Q,同时把这一页的页框按同一个矩阵换算后写回,再另存为输出文件。页面上原有的绘图指令一条都不重排、不重编码,所以文字仍是可复制的文字、矢量仍是矢量、内嵌字体和页内超链接原样保留。
- 三种缩放方式归约成同一组数:无论「按百分比」「按目标纸张」还是「只缩内容」,最后都算成一个
(sx, sy, tx, ty)仿射矩阵,保存时只认这个矩阵。所以同一份文件用哪种方式得到同一个矩阵,结果就完全一样,不存在三条代码路径各写一套 - 页框不是只改一个:
/MediaBox、/CropBox、/TrimBox这些框凡源文件里存在的都同步换算,缺省的不凭空造。不同阅读器对页框的优先级不一致,只改一个会出现「这个软件里小了、那个软件里又大了」,实测成品回读五个框的数值全部按同一矩阵一致 - 是真的缩了,不是只换了个取景框:验收时不看界面数字自证,而是把成品用渲染引擎光栅化后实测「内容包围盒」(这一步只在测试侧做,不随包发布)。5 页扫描件的内容原本是 300×200 pt,按 70% 缩完实测是 210×140,页框同步变成 428.4×554.4;而「只缩内容」模式实测页框仍是 612×792、内容缩到 150×100——两件事各自被数值钉死,与隔壁「裁剪只改页框、内容一个字节不动」形成明确分工
- 链接热区跟着走:勾上「同步缩放批注与链接热区」(默认开)后,页面上每条批注的
/Rect与链接的/QuadPoints八个点按同一个矩阵换算。实测 500×700 的页按 70% 缩成 350×490 时,热区[100 50 260 90]同步变成[70 35 182 63];取消勾选再跑一遍做对照组:页框照旧缩、热区保持原值——证明这个开关真的在起作用,而不是恒开 - 拍照转的横页不会缩错方向:页框坐标在 PDF 里是用户空间(原点在左下、y 轴向上),而人眼看到的宽×高是页面按
/Rotate转好之后的样子,带 90/180/270 旋转的页两者不一致。软件把这段视觉↔用户空间的轴互换写成独立纯函数,四个旋转角逐一断言(含-90°、450°这类等价写法)。实测 4 页旋转样本按 50% 缩完,界面上视觉尺寸 400×300 / 300×400 交替各自减半,成品四页的用户空间页框都是 200×150,/Rotate原样保留 - 目标纸张两种适配:A4 / A5 / B5 / Letter / Legal / Junior / 便签 90×50mm / 名片 90×54mm 加自定义宽×高,单位 mm 与 pt 可切换、切换时数值即时换算回填。「等比适应(居中留白)」取宽高两个比例的小值,整页缩进纸面内、不变形,实测 612×792 到 A5 得 419.5×595.3、比例 0.686;「拉伸填满」宽高各算各的,同一份文件得 0.686 / 0.752 两个比例,状态列直接写「将拉伸到目标」,把「可能变形」这件事摆在明面上
- 宽高可以拆开:默认「宽高联动(等比)」,取消勾选后两个数各填各的,实测 50 / 80 得到 306×633.6,缩放比列拆成「宽0.5/高0.8」两行显示,预览行同步写明两个百分比
- 应用范围:全部页 / 指定页码(
1-3,5、2,8-10这种写法,支持逗号、区间、乱序去重、中文逗号,越界项回显「(越界,按 1-5 处理)」并忽略)。范围外的页内容流与页框一字节未动,状态列写「不在范围」 - 缩完还能再缩:对成品再缩一次,实测页框与内容累计到 35%,内容流是在上一层外面再包一层
q…cm…Q,解析仍然正常——矩阵叠加不累积误差 - 写盘前六道守卫:输出路径与源文件同名同路径直接拒绝;输出名撞上其他已有文件先弹确认框问要不要覆盖;百分比超出 5%~1000% 判非法并给合法区间;缩放后单页超过 PDF 规范上限 14400 pt 拒绝;100% 判成空操作(状态列「已是目标尺寸,不用改」、保存置灰,不产出一个白跑的文件);保存瞬间重新打开源文件核对页数,界面停留期间文件被别的程序改过就拒绝写入
- 读不了的当场说清:加密与损坏文件都按字节判——打开失败后扫文件头和文件尾各 64 KB 是否含
/Encrypt加密字典,有则提示「文件已加密,请先用其他工具去除密码」,没有则提示「文件损坏或不是有效的 PDF」;0 页文件单独提示「文件里没有任何页面」。三种情况保存按钮同时置灰、预览行同步报错,窗口和进程都正常存活不闪退 - 异形内容宁可不动:极少数页面内容流里带内联图像或畸形操作数,解析可能失败。此时整页不缩放(页框也不改),状态列写「内容结构异常,未缩放」,其它页照常处理——绝不产出「页框缩了、内容没缩」的错位文件
- 不做像素预览,所以是单文件包:渲染位图要随包带 7 MB 多的原生渲染引擎,而缩放的结果是纯几何的,「原尺寸 → 新尺寸 + 缩放比」两列数字就足够确认,因此 v1.0 不带渲染依赖,发布包只有 exe 和一份配置
- 资源管理器右键菜单:写
HKCU\Software\Classes下的静态注册表动词(百业PDF大师 → 页面缩放..,命令带%V把路径传进来),免管理员权限、不注册 COM 组件;与同系列工具共用一个分组菜单,注册和注销都只动自己那一个动词,不会把兄弟工具的菜单项一起删掉(这条在真资源管理器里多选 2 个文件跑过端到端:菜单里 6 项兄弟齐全、两个文件起两个窗口各开各的、测完注册表逐字还原)
操作教程
- 第 1 步:把 PDF 放进软件:在资源管理器里选中 PDF 点右键,选「百业PDF大师 → 页面缩放..」;也可以点「选择PDF」按钮,或者把文件从资源管理器直接拖进窗口(本工具一次处理一个 PDF:在资源管理器里多选文件时每个文件各开一个窗口,各自预载自己那一个文件) 预期:窗口上方显示「共 N 页 · 大小 · 首页尺寸(按显示方向)」,下方表格逐页列出原尺寸、旋转角
- 第 2 步:选缩放方式:按百分比:「缩放方式」保持默认的「按百分比」,填宽(%);勾选「宽高联动(等比)」时高跟着变,取消联动可以分别填两个数。合法区间 5%~1000%,填 3 或 1200 会立刻红字拒绝 预期:表格「缩放后(pt)」列逐行跟着变,例如 70 ⇒ 428.4×554.4;填 100 会被判成空操作,状态列写「已是目标尺寸,不用改」并且保存按钮置灰
- 第 3 步:或者选按目标纸张 / 只缩内容:「按目标纸张」:纸张下拉选 A4/A5/B5/Letter/Legal/Junior/便签/名片或自定义,单位在 mm 与 pt 之间切换(数值即时换算回填),「方式」二选一——「等比适应(居中留白)」完整可见不变形、「拉伸填满」铺满纸面但可能变形;「只缩内容(页面尺寸不变)」:页框一个像素不动,只把内容按比例缩小并居中,用来给扫描页留出批注白边 预期:目标纸张模式:612×792 选 A5 得 419.5×595.3、缩放比 0.686、状态「将缩放到目标」;只缩内容 50%:缩放后列仍是 612×792、状态「页面不变,内容缩小」
- 第 4 步:限定应用范围,核对输出文件名:只想缩其中几页时把「应用范围」改成指定页(写
1-3,5);「输出文件」默认是源文件同目录的<源文件名>_已缩放.pdf,可点「浏览...」换位置换名字 预期:范围外的行状态列变成「不在范围」、尺寸保持原样;输出名撞上已有文件会先弹确认框,填成源文件本身则直接拒绝 - 第 5 步:点「保存缩放结果」:保存成功后可勾选「完成后打开输出文件所在目录」直接跳到结果文件夹;界面上参数还在,想再缩一刀就改数字重新保存 预期:新文件出现在输出目录,页数与源文件相同,源文件原封不动

刚载入的 5 页扫描件:默认「按百分比 80%」,表格立刻算出每页 612×792 ⇒ 489.6×633.6、缩放比 0.8、状态「将缩放」,预览行绿字写明「共 5 页,其中 5 页将被缩放(首页 → 489.6×633.6 pt)」,输出名默认是源文件名加 _已缩放

同一份文件切到「只缩内容 50%」:页面尺寸列保持 612×792 不变,缩放比按内容口径显示 0.5,每页状态写「页面不变,内容缩小」——成品实测内容从 300×200 缩到 150×100 并朝页框中心收敛,页面本身大小不动

按 70% 保存之后:成品回读 5 页页框为 [0 0 428.4 554.4]、/Rotate 未动,渲染实测内容包围盒从 300×200 变成 210×140——页面和内容一起缩了;底部那行提示就是这个工具的边界:图像不重采样,所以成品体积不一定变小
第一次用想开右键菜单,点工具栏「右键菜单」按钮即可集成,再点一次选移除就能清理干净,且不影响同系列其它工具;移动了软件所在的文件夹后,在新位置再点一次按钮刷新路径。同系列还有 PDF合并大师、PDF拆分器、PDF旋转工具、PDF删页工具、PDF提取页面、PDF页面重排 和 PDF裁剪工具,共用同一个右键菜单分组。缩完发现页面还是多,就接着用删页或拆分。
常见问题
/Rotate 转好之后的样子,带 90/180/270 旋转的页两者不一致。软件把这段换算写成独立纯函数并对四个旋转角做了断言,实测 4 页旋转样本(视觉 400×300 与 300×400 交替)按 50% 缩完:界面上每页各自减半,成品四页的用户空间页框都是 200×150,旋转角原样保留。表格里的「原尺寸/缩放后」两列一律按你眼睛看到的宽×高显示。/Rect 和链接的 /QuadPoints 八个点会按同一个矩阵一起换算,热区跟着页面走。实测 500×700 缩到 350×490 时热区从 [100 50 260 90] 变成 [70 35 182 63]。这个勾子也可以取消(比如你只想缩版面、热区想留在原位),取消后重跑的结果是页框照旧缩、热区保持原值,两种行为都做过对照实测。软件截图

载入 5 页扫描件:表格逐行列出页码、原尺寸(pt)、旋转角、缩放后尺寸、缩放比、状态;默认按百分比 80% 时每一页会变成 489.6×633.6 已经全部算好摆在眼前

纸张下拉选 A5 后宽高自动回填 419.53×595.28 pt,「等比适应(居中留白)」取小比例 0.686,逐页 612×792 ⇒ 419.5×595.3;切「拉伸填满」时缩放比会拆成宽 0.686 / 高 0.752 两个数,把变形风险写在脸上

内容缩到 50% 而页框保持 612×792,状态列「页面不变,内容缩小」——给扫描页留一圈批注白边用的就是这个模式

另存为 _已缩放 新文件,源文件不动;成品回读页框 428.4×554.4、渲染实测内容 210×140,页面与内容一起缩了

载入需要打开密码的文件时立刻说明原因并置灰保存按钮,进程与窗口一切正常
技术实现与后续维护
程序集 by.pdf.page.scale,单文件发布:PdfSharp、界面库、授权组件都已合并/嵌入进 exe,包里再带一份 cfg.ini 配置,没有原生依赖。运行环境是 .NET Framework 4.8,Windows 10/11 一般已经具备。授权与试用计时按机器码在本机完成,不上传文件内容,也不读取文件之外的个人数据。出厂前跑了三轮验收:一轮无界面自检(mm↔pt 往返、三种缩放方式的矩阵与新页框逐值钉死、四个旋转角与 -90°/450° 等价写法的视觉↔用户空间换算、百分比与目标尺寸边界、14400 pt 单页上限的两种来路、页码范围解析、页框读写与 /TrimBox 存在才改、内容流包壳与原序列完整性、标注 /Rect 与 /QuadPoints 换算、二次缩放累计、六类保存守卫、加密/损坏/0 页判定、右键菜单注册与注销与兄弟动词安全,共 113 项断言),一轮模拟真实点击的界面回归(载入→百分比→取消联动→目标纸张→只缩内容→范围与非法页码→100% 空操作→标注同步含对照组→旋转页→覆盖确认与「输出不能等于源」守卫→三类异常文件→多文件多窗口,共 123 项,其中成品数值是用渲染引擎实测内容包围盒对拍出来的),一轮真资源管理器多选文件的右键菜单端到端(11 项)。这些在混淆后的发布版上重跑一遍仍然全绿,并在只放那 2 个文件的干净目录里实跑过完整流程。
后续可扩展的方向:多文件批处理(一个目录跑完)、把常用比例或目标纸张存成模板下次一键套用、缩完顺带把内容栅格化以真正压缩体积、按新页框重建书签目录、以及加一个「所见即所得」的预览窗(代价是随包带一份原生渲染引擎,目前刻意不做,见上文)。这些都在现有的「页码 → 缩放矩阵」数据模型和页面搬运链路上,不需要改动界面结构。
可以定制(二次开发)
这个工具按「一个痛点一个小工具」的思路做,界面和功能都可以按你的实际流程改:比如固定输出目录、按部门命名规则自动改名、扫描后自动按「一律缩到 A5 等比适应」的模板处理、和拆分/删页/提取/旋转/重排/裁剪串成一条流水(先拆→缩到目标纸张→删广告页→再合回去),或者做成一次跑完一个目录的批量版本。需要改动的联系方式见站内「联系我们」页面的 QQ 客服,也可以在本文下方留言说明场景。定制合作会连同可编译的工程一起交付。
使用说明与免责声明
请只对你拥有合法权利的文件进行缩放等操作,改动他人报告、教材、图纸的页面尺寸可能涉及版权与保密义务,责任由操作者自行承担。特别提醒两件事:一是本工具只改几何(矩阵与页框),不重采样图像、不删除内容,页面上原有的信息一条不少,想抹掉敏感内容请用真正会重写页面内容的手段;二是缩放后页面变小,打印时请相应调整打印机的「实际大小 / 适合可打印区域」选项,否则打印驱动可能又替你缩一次、得到双重缩小的效果。工具按「读源文件、写新文件」的方式工作,不会改动任何源文件;但输出文件如果与已有文件重名,确认后会被覆盖,重要资料建议先备份或换一个输出目录再处理。本工具按「现状」免费提供,因使用本工具造成的数据损失,作者不承担责任。
v7y0 打开下载页后,在「输入密码」框里填这 4 位,再点它下方的按钮即可下载,不用注册、不用登录。
