格式知识2026-09-20约 1 分钟阅读

PDF 里面有什么:对象、流与交叉引用表

PDF 是一份由编号对象、压缩流与字节偏移 xref 组成的小数据库。Get Info 只做只读检查,文件地图坏掉时由 Repair 重建结构。

PDF123 · 更新于 2026-09-20

PDF 不是把页面平铺出来的转储文件,而是一份由对象构成的小型数据库:多数内容存成压缩流,再由交叉引用表(xref)标出位置,阅读器才能直接跳到 17 号对象,不必从头扫到尾。这张地图一坏,查看器就说文件损坏,哪怕页面字节还好端端躺在磁盘上。

对象

页面、字体、图像、元数据、文档目录,凡是值得关心的东西都是带编号的对象。页面指向内容流与资源,资源指向字体与 XObject,目录指向页树。合并、旋转、盖章这类工具做的事,大多是重写这张关系图,而不是重绘像素。

流

流是一种载荷为字节序列的对象,通常经 Flate 压缩,装的是页面内容运算符、嵌入字体文件或图像数据。所以用文本编辑器打开 PDF,会看到 ASCII 记号与二进制块混杂。把流展开、但不动页面外观,是排查问题的常用手段;本站的 压缩 则用 qpdf 重新压紧这些流,它不降采样图像,也不子集化字体。

交叉引用表

典型文件靠近末尾处有一段 xref 节,较新的文件里则是 xref 流,逐条列出每个对象号的字节偏移,阅读器直接 seek 过去。下载被截断、合并出错、保存写到一半,都会让尾部 trailer 指向已经对不上的偏移:第一页的像素或许仍在,找到“第一页”的那张地图却没了。

所以结构修复跟 OCR、解锁是两种活:修复从有效残余重建内部结构,既不补画缺失的页面图,也不猜密码。

重写前先检查

获取 PDF 信息 返回一份 JSON 报告,含页数、元数据、字体与结构细节,不是改过的 PDF。在压缩、转换或修复之前想先弄清手上是什么文件,就该用它。

查看器完全拒绝打开时,改用 修复 PDF,它会重建结构,包含交叉引用恢复。文件能打开、只是扫描文字选不中,那是 OCR 的问题,不是 xref 的问题。

短决策顺序

  1. 文件打不开:先 修复。
  2. 文件能开,你要的是事实(页数、字体、加密线索):用 获取信息。
  3. 结构没问题,你要更小的文件或从扫描件里拿到可读文字:体积用 压缩,文字用 OCR 取 Markdown,不必再跑一次修复。

Get Info 与 Repair 都不需要账号。想通过 HTTP 调同一批 op,见 开发者。Repair 与品牌桌面“recovery”产品有何不同,见 PDF 在线修复与 Recovery Toolbox 搜索。

打开工具
在浏览器里完成处理,不加水印,文件处理完就会删除。
打开工具