修复 PDF

下一步

打不开的 PDF 往往只是结构受损:交叉引用表(xref)损坏、尾部(trailer)不匹配或残留,或者一次糟糕的保存后对象偏移不再对齐。本工具用一个宽容的解析器打开文件,保留它能读到的每一页,并从零写出一个全新的 PDF,从而干净地重新生成交叉引用表和尾部。它无法凭空造出真正丢失的数据,但能修复数量惊人的一类 PDF:页面本身完好,唯一的问题就是结构损坏。全部在你的浏览器中运行,因此文件绝不会离开你的设备。

修复的原理

  1. 1

    上传 PDF

    把打不开的文件拖放进来。它留在你的设备上;不会有任何内容发送到服务器。

  2. 2

    工具重新读取它

    一个宽容的 PDF 引擎打开文件,忽略损坏的结构,读取它能恢复的每一页。

  3. 3

    重建出干净的文件

    页面被复制到一份全新文档中,因此交叉引用表和尾部都从零写出,天生就是有效的。

  4. 4

    下载结果

    你会得到一个能干净打开的全新 PDF。在你的阅读器中打开它,确认所有页面都在。

这项修复能修什么、不能修什么

本工具的做法是重新读取 PDF 并写出一个完全崭新的文件。这会重新生成你页面周围的结构,从而修复结构性缺陷,但无法找回真正缺失的数据。

问题 能修复? 原因
交叉引用表损坏或不匹配 新文件会用一张全新、正确的 xref 写出
糟糕保存后残留或过时的尾部 会为重建的文件生成一个干净的尾部
反复增量保存留下的杂物 只保留当前页面;旧的修订版本被丢弃
阅读器拒绝、但解析器仍能读到的对象 常常能 在干净文件中重新写出它们,通常能满足严格的阅读器
文件被截断以致解析器根本打不开 不能 若引擎无法解析文件,就没有可重建的东西
对象数据真正缺失或不可读 不能 工具只保留它能读到的部分;其余无法凭空造出
用未知口令加密 不能 没有口令,内容就一直锁着

PDF 结构为何会损坏

  • 下载或上传不完整。 传输途中丢失最后几个字节的文件,会丢掉位于尾部的交叉引用表。
  • 写入中断。 保存时崩溃的程序,可能从未刷写出一个有效的尾部。
  • 糟糕的二进制传输。 以会改写换行符的文本模式搬运 PDF,会破坏压缩流内部的字节。
  • 杂乱的增量编辑。 一次次覆盖保存,可能留下一种结构:即便页面完好,某些阅读器仍会拒绝它。

它不做的事

  • 它无法恢复解析器根本打不开的 PDF;严重截断的文件可能超出本工具的能力。
  • 它不修复存放在 PDF 内部的受损图片或字体;一张损坏的 JPEG,即便装进干净的容器也仍是损坏的。
  • 它不移除口令,也不解密受保护的内容。

对于这些情况,在本地运行的桌面工具(如 Ghostscript 或 qpdf)有时能走得更远。

如何避免损坏的 PDF

用代码生成 PDF 时,请正确关闭文件,以便写出尾部。通过 HTTP 提供它们时,请发送正确的 Content-Length,好让客户端知道文件何时接收完整。编辑前保留一份原始副本,这样糟糕的保存永远不会成为你唯一的版本。

常见问题

它会保留解析器能读到的每一页,对结构受损的文件而言,这通常就是全部。若某些页面真的丢失了(其数据已不在文件中),工具无法把它们找回来;它只会围绕剩下的内容干净地重建。

只要它们结构完好就能:会原样复制到新文件中。若某个字体或图片流本身已损坏,那个特定的字形或图片可能仍显示为空白,但页面其余部分不受影响。

只有当内容并非真正被锁定时才行。工具会尝试越过基本加密去读取,但它没有口令输入框,也无法破解真正的保护。用你没有的口令锁定的文件是无法恢复的。

不会。文件完全在你的浏览器中,由页面内运行的 PDF 引擎读取并重建。没有任何内容被发送到任何地方,因此你可以安全地修复机密文档。

毫发无损。工具绝不改动你的源文件;它只写出一份单独的、修复后的副本。下载新文件,确认它能打开,在你确定之前请保留原件。

相关工具

此工具还提供其他语言版本