看看 PDF 内部是什么样子

几乎所有 PDF 工具做的都是编辑页面,几乎没有工具会告诉你一份 PDF 到底是什么。这个工具按 PDF 工程师读文件的方式,把完整的对象关系图摆出来 —— 用来调试生成器、核查文件里到底装了什么,或者单纯了解这个格式,都用得上。

正在加载工具……

工作原理

  1. 拖入 PDF —— qpdf 会在你的浏览器里解析出完整的对象关系图。
  2. 按对象类型筛选,或者在字典里搜索;点开一个对象就能看到格式化后的内容。
  3. 查看总览信息:版本号、页数、加密情况,以及文件保存过几代增量版本。

为什么什么都不用上传

这个页面上的每一步操作,都由运行在你浏览器标签页里的代码完成,用的就是渲染网页的那套引擎。文件从磁盘读进标签页的内存,在那里被处理,再作为下载写回去。它不会被送到任何地方 —— 不会送给我们,也不会送给第三方。

自己动手验证

  1. 打开浏览器的开发者工具(F12),选择“网络”(Network)面板。
  2. 载入你的文件,运行这个工具。
  3. 你能看到的请求只有这些:工具自己的代码 —— 少数几个重型工具还会从公共 CDN 取它们的开源引擎 —— 外加一条发往 loreatec.jp 的小小访问记录(页面地址和标题,仅此而已)。没有一条带着你的文件。

文件不外传的证明 →

常见问题

“保存过几代增量版本”是什么意思,为什么要特别标出来?

PDF 可以增量保存:新版本追加在文件末尾,旧的字节仍然留在文件里。代数超过一代,就意味着把文件从更早的一个 %%EOF 处截断,可能还能恢复出更早的内容 —— 如果一份文件是在分享前被“改过”的,这一点就很关键。

这东西实际能用来干什么?

调试自己代码生成的 PDF(为什么字体没嵌入?元数据去哪了?),在发布前核查一份文件(它里面到底装了什么?),以及搞清楚为什么同样 200 KB 的两份 PDF,一份秒开,另一份卡半天。这些是页面级工具连问都问不出来的问题,对象关系图能回答。

能看到数据流里的内容吗?

能看到每个数据流的字典信息 —— 长度、过滤器、类型 —— 但这个版本还不会把解码后的内容提取出来。要拿页面图片,用提取图片的工具;要拿文字,用文字提取类的工具。

PDF 会被上传吗?

不会。一个标准的开源 PDF 库被编译成 WebAssembly,在这个标签页里解析文件。这个工具的使用者经常要检查未发布的机密文件,本机运行不是加分项,是必须做到的底线。