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

主界面:三个文件(横版 5 页 + 竖版 3 页 + 旋转 2 页)当成连续的一串页排进 4合1 网格,预览行绿字写明「源页 10 页,本次取 10 页 → 成品 3 张」,左下角的排版示意已经把每一格是第几页画出来了
这个工具解决什么问题
「几张一页」这件事在 Windows 上只有两条笨路:一是打印驱动里那个「每张 2 页 / 4 页」,它只在打印那一刻改变成像,存下来的 PDF 还是一页一张,换台机器又铺开了,也没法把成品发给别人;二是阅读器的高级版「多页打印到 PDF」,收费、要装虚拟打印机、而且拼完的页面上根本不知道哪格是谁。在线拼版网站最省事,但得先把几十页合同、病历、内部教材整份传上去,上传之前你也看不到「每格到底放了第几页」。
- 原来的做法:打开在线网站 → 上传文件 → 选预设 → 下载回来 → 用阅读器翻页核对每格是谁 → 顺序不对就重来;或者先合并、再缩放、再在打印对话框里勾「每张 4 页」,三步之后文件还是几十页
- 用这个工具:在资源管理器里多选几个 PDF 点右键,选「百业PDF大师 → 多页拼版..」(几个文件会并进同一个窗口的一张有序列表)→ 选「4合1」、纸张 A4 → 左边示意图、右边页流表同时告诉你「第 1 张的左上格 = 讲义.pdf 第 1 页」→ 点「保存拼版结果」
- 省下来的:不用上传下载、不用注册账号,没有页数和体积的额度限制;参数改一下页流立刻重算,不点保存什么都不写盘;成品页数直接是 ⌈源页数 ÷ 每纸张数⌉,10 页 4合1 出 3 张、100 页 8合1 出 13 张,打印店拿到的就是最终样子
技术实现
Windows 桌面程序,.NET Framework 4.8 + WinForms 界面,PDF 处理用 PdfSharp。拼版走的是整页搬运:每个源文件用 XPdfForm.FromFile 打开一次,新建一张目标纸张大小的空白页,然后逐格把 PageNumber 改成该格该放的源页码、用 XGraphics.DrawImage 把那一页画进格子的矩形里。也就是说源页的内容流原样进文件,文字仍然可选中、可复制、可搜索,矢量线条不失真,字体不用重新嵌入;缩放只发生在「画到格子里」这一步的矩阵上。开发阶段专门对这一点做过像素对拍:同一个共享实例连续改页码画 4 格,与「每格各自打开一次源文件」的写法产出的成品字节数完全相同;再把每一格与四张源页逐一比对,最小灰度差都落在它本该放的那一页上(2.3~3.8),次小的对照差至少 7.3、最大 59.2,证明不会串页。
- 页流:列表里的多个 PDF 按列表顺序展开成连续的一串源页,表格逐行列出「序号 / 来源文件 / 源页码 / 源尺寸(pt) / 落到第几张 / 落在哪一格」;尺寸列一律是视觉口径,带
/Rotate 90/270的拍照页按你眼睛看到的宽×高显示,这一条也用渲染引擎实测对拍过 - 每张几张:预设 2合1 / 3合1 / 4合1 / 6合1 / 8合1 / 9合1,也可以选「自定义」直接填行×列(行列各 1~5,最多 25 格);选预设会自动回填行列
- 目标纸张:A4 210×297、A5 148×210、B5 176×250、Letter 215.9×279.4、Legal 215.9×355.6、Junior 127×177.8(宽行本),各带纵向/横向;新页的
MediaBox与CropBox一起按所选纸张写,网格在纸内扣除边距后等分 - 排页顺序:「先左后右(横排)」是常规讲义读法,「先上后下(竖排)」给漫画和双栏读法用
- 格内适配:「等比居中(可能留白)」保证内容完整可见,「拉伸填满(可能变形)」铺满格子;外边距、格间距按 mm 填,每格可以画 0.5pt 灰色细边框方便裁切,末页空格子可选择「也画框线」补齐
- 应用范围:页码表达式
1-3,5(与同系列其它工具同一套写法),多个文件时按「所有文件连起来数」的全局序号计 - 保存守卫:输出路径撞上任何一个源文件直接拒绝;输出名撞上其它已有文件先弹确认框,取消则原文件一个字节不动;行列越界、边距大到格子宽度 ≤ 0、纸张小于 50mm、页码表达式看不懂,都在预览行标红给中文原因,不会把非法参数写进 PDF
- 右键菜单:组键「百业PDF大师」下挂一个「多页拼版..」动词,写的是当前用户的注册表项(HKCU),免管理员、免安装 COM 组件;多选文件时资源管理器会一个文件起一个进程,工具自己收敛成一个窗口:首个实例负责开界面,其余实例把文件路径转交过去后自行退出,所以 3 个文件并成列表 3 行、窗口 1 个、进程 1 个(这条在真资源管理器里多选跑过端到端);移除时只删自己那一个动词,不动兄弟工具的菜单项
操作教程
- 第 1 步:把 PDF 放进软件:在资源管理器里选中一个或多个 PDF 点右键,选「百业PDF大师 → 多页拼版..」;也可以点「添加PDF」按钮多选,或者把文件从资源管理器直接拖进窗口。多个文件会按列表顺序当成连续的一串页来处理,用「上移」「下移」「按名称排序」调整先后,「移除」「清空」删掉不要的 预期:预览行绿字立刻显示「源页 N 页,本次取 N 页 → 成品 K 张」,页流表逐行列出每一页来自哪个文件、源第几页、落到第几张的哪一格
- 第 2 步:选「每张几张」和纸张:「每张几张」下拉选 2/3/4/6/8/9 合 1,需要别的排法就选「自定义」自己填行和列(各 1~5);「纸张」选 A4/A5/B5/Letter/Legal/Junior,「方向」切纵向/横向 预期:行列框随预设自动回填(例如 8合1 回填 2 行 × 4 列),预览行的「成品 K 张」随之重算;格子被边距挤得太小时预览行会转成橙字提醒,而不是闷头出一个看不清的文件
- 第 3 步:调排页顺序、适配方式与格线:「排页」选先左后右(横排)或先上后下(竖排);「格内适配」选等比居中或拉伸填满;填外边距、格间距(mm),勾/取消「每格画边框」,「末页」选留空还是空格子也画框线 预期:左下角的排版示意即时重画,用 ◀ ▶ 或页流表翻到任意一张都能预览;切竖排后同一页会落到不同的格位,格位列跟着变成左上/左下/右上
- 第 4 步:限定应用范围,核对输出文件名:只想拼其中几页时把「应用范围」改成指定页(写
1-3,5,按所有文件连起来的序号数);「输出文件」默认是第一个源文件同目录的<源文件名>_拼版.pdf,点「浏览…」可以换位置换名字 预期:范围外的行状态列变成「不在范围」,预览行写成「源页 10 页,本次取 4 页 → 成品 1 张」;表达式写错(比如abc或1-)预览行直接红字说明看不懂在哪,保存按钮不响应 - 第 5 步:点「保存拼版结果」:保存过程中进度会写「正在拼第 i / N 张…」;勾上「完成后打开输出文件所在目录」可以直接跳到结果文件夹。界面上参数还在,想换一种拼法就改数字再保存一次 预期:新文件出现在输出目录,页数 = ⌈取用的源页数 ÷ 每纸张数⌉,源文件一个字节都不动;提示条会报出成品大小与跳过页数

三个文件(横版 5 页 + 竖版 3 页 + 旋转 2 页)共 10 页,默认 4合1 A4 纵向 → 成品 3 张;第 3 张只有 2 格有内容,翻到末页能看到两个空格子写着「空」

同一批页切到 8合1 + 「拉伸填满」+ 末页「空格子也画框线」:预览行「8合1 · 拉伸填满 · 成品 2 张」,示意图里 2×4 网格铺满,混排的横竖页都被拉成格子大小——这一档就是「可能变形」的代价,想要完整可见就用默认的等比居中

排页切成「先上后下」:源第 2 页从「右上」变成「左下」,示意图与表格同步改;漫画、双栏读法用这一档,不用把文件倒过来重排

填 1-3,5 之后:只取 4 页拼成 1 张,页流表其余 6 行标「不在范围」但保留着,方便你确认「被跳过的到底是哪几页」

10 页拼成 3 张 A4 落盘(成品 7,670 B,源文件合计 5,846 B);底部那行提示就是这个工具的边界:内容原样搬运、不重采样,所以成品体积不一定变小
第一次用想开右键菜单,点工具栏「右键菜单」按钮即可集成,再点一次选移除就能清理干净,且不影响同系列其它工具;移动了软件所在的文件夹后,在新位置再点一次按钮刷新路径。同系列还有 PDF合并大师、PDF拆分器、PDF旋转工具、PDF删页工具、PDF提取页面、PDF页面重排、PDF裁剪工具 和 PDF页面缩放,共用同一个右键菜单分组。拼之前想先去掉封面广告页,就先用删页或提取处理一遍。
常见问题
/Fm0 Do),但 /Annots 与 /Link 都是 0。同理,书签目录(大纲)也不重建——它属于文档级结构。带目录的长文档、需要点击跳转的合同,拼完请在阅读器里核对一遍;只是把讲义、扫描件、漫画拼成省纸版,则不涉及这个问题。1-3,5)是按这条连起来的全局序号数的,不是每个文件各自数。_拼版。软件截图

三个文件 10 页 4合1 的完整界面:上方文件列表、中间参数区、左下排版示意、右下页流表;页流表每行告诉你这一页来自哪个文件的第几页、会被放到第几张纸的哪一格

预设切到 8合1 时行列自动回填 2×4,预览行「8合1 · 拉伸填满 · 成品 2 张」;这一档把横竖混排的页面都拉成格子大小,变形风险由「格内适配」这个选择决定

同一批页把排页顺序换成竖排,格位从「左上/右上/左下…」变成「左上/左下/右上…」,示意图与表格同步重算,适合漫画和双栏读法

「应用范围 → 指定页」填 1-3,5:只取 4 页拼成 1 张,其余行标「不在范围」但仍列在表里,方便确认到底跳过了哪几页;表达式写错时预览行直接红字说明看不懂在哪

成品 3 张 A4 落盘、提示条报出成品字节数;源文件原封不动,「完成后打开输出文件所在目录」勾上就直接跳到结果文件夹

载入需要打开密码的文件时立刻说明原因并置灰保存按钮,进程与窗口一切正常
技术实现与后续维护
程序集 by.pdf.multi.layout,单文件发布:PdfSharp、界面库、授权组件都已合并/嵌入进 exe,包里再带一份 cfg.ini 配置,没有原生依赖。运行环境是 .NET Framework 4.8,Windows 10/11 一般已经具备。授权与试用计时按机器码在本机完成,不上传文件内容,也不读取文件之外的个人数据。出厂前跑了五套验收:一轮无界面自检(86 项断言:行列与格位换算、横竖排两种映射、视觉尺寸与用户空间在四个旋转角下的换算、六种纸张与自定义行列、等比居中/拉伸填满两档适配、边距与格间距的合法区间、末页留空与补齐、页码范围解析、成品页数公式、六类保存守卫、加密/损坏/0 页判定、右键菜单注册与注销与兄弟动词安全);一轮成品像素对拍(40 项,用渲染引擎把成品画出来,逐格量内容包围盒与长宽比,确认「等比居中真的居中、拉伸填满真的铺满、空格子真的空白」);一轮模拟真实点击的界面回归(24 项:载入→预设切换→竖排→8合1→范围→非法输入→保存→守卫);一轮真资源管理器多选文件的右键菜单端到端(15 项,多选 3 个文件聚合成 1 个窗口 1 个进程、列表 3 行、页流 10 页,测完注册表逐字还原);一轮 151 MB / 40 页大文件(10 项)。合计 175 项断言,在混淆后的发布版上重跑一遍仍然全绿,并在只放那 2 个文件的干净目录里实跑过完整流程,本文所有截图与封面都是用那个发布版实拍出来的。
已知的边界(不藏着):拼版走 Form XObject,所以批注、页内链接、表单域、书签目录不会跟到成品里(画面本身完整);不做图像重采样,因此不保证减小体积;预览是矢量级的「格子示意图 + 页码」,不是逐像素的照片级预览——要做到照片级预览得随包带一份原生渲染引擎,目前刻意不做。
后续可扩展的方向:随包带渲染引擎做照片级预览、把常用「纸张 + 每张几张 + 边距」存成模板下次一键套用、一页一张地指定格位(手工排版)、拼完顺带把内容栅格化以真正压缩体积、重建书签目录与搬运批注链接、以及一次跑完一个目录的批量版本。这些都能挂在现有的「文件列表 → 页流 → 格位」数据模型上,不需要改动界面结构。
可以定制(二次开发)
这个工具按「一个痛点一个小工具」的思路做,界面和功能都可以按你的实际流程改:比如固定输出目录、按「部门-日期-纸张」命名规则自动改名、把公司常用的「A4 双面 2合1 带裁切框」做成默认档、和拆分/删页/提取/旋转/重排/裁剪/缩放串成一条流水(先拆章 → 删封面广告页 → 缩到目标尺寸 → 再拼版),或者做成一次跑完一个目录的批量版本。需要改动的联系方式见站内「联系我们」页面的 QQ 客服,也可以在本文下方留言说明场景。定制合作会连同可编译的工程一起交付。
使用说明与免责声明
请只对你拥有合法权利的文件进行拼版等操作,改动他人教材、图纸、报告的页面排布可能涉及版权与保密义务,责任由操作者自行承担。特别提醒三件事:一是本工具只搬整页内容,不删除页面上的任何信息,一页上原有的敏感小块内容拼完之后仍然在(只是变小了),想真正抹掉请用会重写页面内容的手段;二是拼版后批注、页内链接、表单域与书签目录会丢失,带这些对象的正式文件请先做小样确认;三是拼版后每张纸上的内容变小,打印时请选「实际大小 / 100%」,不要让打印驱动再缩放一次,否则会得到双重缩小的效果。工具按「读源文件、写新文件」的方式工作,不会改动任何源文件;但输出文件如果与已有文件重名,确认后会被覆盖,重要资料建议先备份或换一个输出目录再处理。本工具按「现状」免费提供,因使用本工具造成的数据损失,作者不承担责任。
8fxz 打开下载页后,在「输入密码」框里填这 4 位,再点它下方的按钮即可下载,不用注册、不用登录。
