PDF 页面重排 - 调整顺序与删除多余页面
PDF 页面重排
页面会被复制到一个新文档中,而不是在原地编辑,因此原始文件不会被修改。每一页都会保留它所引用的内容和资源,所以重排只会改变顺序,不会影响任何排版。书签和表单字段的值可能无法在复制后保留。所有处理都在你的浏览器中完成,文件不会被上传。
功能介绍
PDF 并不按印刷顺序存储页面,而是把页面组织成一棵页对象树:目录(catalog)指向页树的根节点,每个节点带一个 Kids 数组列出它的子节点,以及一个 Count。较大的文档会把树拆成两页、四页或更多页的平衡子树,让阅读器不必解析整个文件就能打开单独一页,这也正是文件内部的对象编号通常与你看到的页码毫无关系的原因。查看器显示的顺序,是对这棵树做深度优先遍历的结果,字节流本身并不规定这个顺序。两个页面对象几乎相同的文件,可以呈现出完全不同的页面次序。叠在这一切之上的还有交叉引用表,它是一张索引,把对象编号映射到该对象所在的字节偏移,外加一个 trailer 记录 catalog 与页树根的位置。交叉引用表不负责排序,它的唯一作用是让阅读器不必通读整个文件就能跳到某个对象——这也正是重排一个文档无需重写、无需搬动任何内容流的原因。线性化文件又添了一层复杂度:线性化 PDF 为了网页浏览的加载速度,会刻意按大致的阅读顺序把对象写在文件里,而这种物理写入顺序与逻辑页序完全无关。这里采用的思路与原地编辑正好相反:工具不去重写原有的对象图,而是读取源文档、新建一个空的目标文档,再按照你排定的序列把页面一页页复制进去。被复制的页面带着它的内容流一起走,内容流里存放着绘制文字、矢量轮廓和内嵌图像的绘制指令,同时也带着这条流所引用的全部资源,例如字体程序、图像 XObject 和色彩空间定义。这恰恰说明了为什么页面移动之后版面纹丝不动:没有任何东西被栅格化,没有任何一个段落被重新排版,也没有一次重新编码,页面字典和它的资源字典是作为整体与内容流一起迁移的。不会跟着迁移的,是那些挂在文档层而不是页面层的信息。文档大纲,也就是带有标题和跳转目标的书签树,属于 catalog,不会被带过去,于是原本指向第 4 页的书签会改为指向新顺序中第 4 个位置上的那一页。表单字段值存放在文档级的 AcroForm 结构中,可能无法保留,导出的表单看上去是空白的,但方框仍可点击。嵌入的 JavaScript 动作、文档级脚本和交互行为同样会丢失,文件附件、包含原作者与标题的文档信息字典、XMP 元数据、页标签以及增量更新历史也一样。数字签名会被任何结构改动破坏,所以一份重排过的副本已不再是一份经过签署的文档。这些都不是页面本身受损,而是页面内容可靠迁移、文档级脚手架必须另行重建的差别。
使用方法
- 在浏览器中打开 PDF 页面重排工具。解析与写入全部在本机完成,文档不会被上传,任何副本都不会到达服务器。
- 点击「Choose a PDF」文件选择框并选中文档。加密或受密码保护的文件无法读取,工具会直接给出提示而不是页面列表。
- 查看文件选择框下方的状态行,它会确认已载入多少页;再看看显示文件名和剩余页数的汇总行。
- 在编号列表中逐行核对:每一行左侧是新的位置 #1、#2,右边是这一页原本的页码,凡是被移动过的行都会标注 moved。
- 点某一行的上移箭头可把它往上挪一位,点下移箭头往下挪一位;首行与末行朝外的那一侧箭头会变灰,因为已经没有更远的位置可去。
- 点行末的叉号可直接把这一页从输出中剔除,删除空白隔页、封面页或重复扫描时用这个最快。
- 如果排错了,点 Reset order 一次性把所有页面恢复原位,再按更稳的节奏重新排一次。
- 点 Save new PDF,工具会按你的序列写出新文档,并以原文件名加 reordered 后缀下载。
- 再看一次状态行,它会报告新文档共有多少页;如果删过页面,还会告诉你删除了几页。
计算示例
输入: 一份 24 页报告的双面扫描件,奇数页与偶数页分成两块
过程:
把每一个奇数页行上移一位,直到两半合并到一起结果: 得到按阅读顺序排列的 24 页,保存为 report-reordered.pdf,版面原样
输入: 一叠签署表格,夹有 3 张空白隔页和 1 张重复封面
过程:
按第 1、5、12 行的叉号剔除这 4 页,然后保存结果: 状态行显示「已保存,新顺序 9 页,删除 4 页」,原文件未改动
输入: 三章分别导出后按第 3 章、第 1 章、第 2 章的顺序合并
过程:
把原第 13 页上移到第 1 页之前,再把原第 25 页移到末尾结果: 章节按编号排列,每一章仍从它原来的首页开始
输入: 客户门户上带密码保护的销售报表
过程:
尝试载入文件,在解析阶段即失败结果: 提示加密文件无法重排 —— 先去掉密码再重新载入
相关搜索
相关搜索:pdf页面重排, pdf页面排序, 移动pdf页面, 删除pdf页面, pdf页序调整, pdf页面重新排列。
pdf页面重排pdf页面排序移动pdf页面删除pdf页面pdf页序调整pdf页面重新排列pdf页面顺序调整扫描件页序错乱删除pdf空白页pdf倒序页面在线排序pdfpdf页面提取pdf双面扫描页序pdf页面排序工具pdf页面错乱修复免费pdf页面工具在线编辑pdf页面pdf页面重新排序
常见问题
重排页面会破坏版面、字体或图片吗?
不会。页面是被复制而不是被重绘,因此每一页进入新文档时都带着完整的内容流,以及这条流所引用的全部资源:内嵌字体程序、图像 XObject、色彩空间定义和图形状态。由于过程中既不栅格化也不重新排版、更不重新编码,字形位置、字距、矢量曲线、分辨率与色彩都与原来完全一致,之前渲染正确的页面之后依然渲染正确。尺寸不一致的混合页面(例如竖版封面加横版跨页)同样保留,因为每页各自保有自己的 MediaBox。事后仍需检查的,是页面本身之外的东西,比如原本指向特定页码的书签,原因见下一条。
为什么我的 PDF 显示的页序与文件里的顺序不一致?
因为 PDF 存的是页树,而不是印刷顺序。catalog 指向 Pages 根节点,每个节点带一个列出子节点的 Kids 数组和 Count,阅读器显示的顺序就是对这棵树做深度优先遍历的结果。文件内部的对象编号是随对象创建先后分配的,所以最后修改的那一页反而可能排在字节流的最前面;大文档还会把树拆成平衡子树,以便阅读器不必整体解析就跳到某一页。交叉引用表作为一张从对象编号到字节偏移的查找表与它并存,它的职责是定位对象而非排列顺序。线性化 PDF 更进一步,会为了网页查看刻意按大致的阅读顺序写入对象,因此文件里的物理顺序几乎不能说明页序。
页面复制到新文档之后,有哪些东西不会保留?
凡是挂在文档层而非页面层的信息都不会保留。文档大纲,也就是带作者标题和跳转目标的书签树,附着在 catalog 上,不会被带过去,于是原本指向第 4 页的书签会指向新顺序中第 4 个位置上的页面。表单字段值存放在文档级的 AcroForm 结构里,可能无法保留,导出的表单方框仍可点击但内容为空。嵌入的 JavaScript 与交互动作、文件附件、包含作者与标题的文档信息字典、XMP 元数据、页标签和增量更新历史都会一并丢弃。数字签名会被任何结构改动破坏,所以重排后的副本不再是一份经过签署的文档。页面自身的内容、图片、字体以及页面所引用的批注才是可靠迁移的部分。
可以用它删除扫描件里的空白页吗?
可以,而这正是人们最常来这里做的理由之一。载入文档后,按每一行右侧的叉号即可剔除封面、多余的背面、双面送纸器留下的分隔页,或重复扫描出来的首页。文件名下方的状态行会跟踪原文件还剩多少页,汇总行显示实时总数,因此你能确认自己删掉的是 3 页而不是 4 页。保存之后,状态行会以「新文档共多少页、删除多少页」的形式给出确认。被删掉的页面只是不进入新文件,磁盘上的原文档始终没有被改动,一旦删错一行,重新载入原文件即可。
可以重排多少页?
实际的限制来自内存,而不是某个固定的页数上限,因为原文档和新组装出来的输出会同时驻留在浏览器内存中。几百页的文档——包括典型的扫描件和报告——在普通笔记本电脑上都能从容处理,而且每个页面所做的只是字典层面的操作而非重新渲染,因此即便文件较大速度也很快。体积极大的扫描档案、尤其是图像数据达到数百兆字节的那种,更容易碰到内存上限,或在写出新文件时出现明显停顿。遇到这种情况,可以把文档拆成较小的部分分别整理,再事后合并,或者在开始之前先关掉其他标签页以释放内存。
重排页面时我的 PDF 会上传到什么地方吗?
在这个工具里不会。文件由浏览器自身的文件 API 读取,在标签页内解析成文档模型,再在同一标签页中写出并进入下载流程,这些字节不会经过任何远程机器,也不会有第三方持有该文档。对最常被拿来重排的文件而言,这个区别很关键:签署完毕的租约与合同、医学与法律记录、银行对账单、纳税申报、提交到公开卷宗的证据、内部报告,以及任何受保密协议约束的材料。上传式服务会把其中每一份都暴露给运营方,无论它的隐私页面如何声明事后会删除文件。在把任何你无权分享的文档交给某个工具之前,请先确认它确实在客户端处理。