看进 PDF 表单内部,而不只是它的表面
可填写 PDF 看上去简单,实际上很少简单。每个方框背后都是一个 AcroForm 字段:名称可能嵌套三层,/Ff 整数的各个位在不同字段类型下含义不同,导出值几乎从不等于旁边印的那个词,而外观流有的阅读器会重新生成、有的不会。PDF 表单字段检查器把这些全部摊开。
它会报告什么
- 限定名 —— 沿
/Parent拼接的/T,因此address.city就显示为address.city,而不是一个无法引用的孤零零的city。 - 真实类型 —— 文本、多行、梳状、密码、复选框、单选组、命令按钮、下拉、列表框或签名,由
/FT和标志位共同推导。 - 按正确字段类型解码的每一个
/Ff位。 第 26 位在文本字段上是 RichText,在按钮上却是 RadiosInUnison;不看/FT就解码只会得到胡说。 - 导出值。 每个控件
/AP /N字典的键才是复选框或单选按钮提交的内容,常常是1、On或某个产品编码,而不是Yes。 /MaxLen、/Opt、/DA的字体与字号、/Q对齐、/TU提示、/DV默认值,以及任何/AA附加动作。- 坐标 —— 原始的自下而上
/Rect,以及同一个框在自上而下页面坐标中的位置,还有它在/Annots中的 Tab 次序。
它能找出的问题
限定名重复(两个框、一个值)。缺少外观流的控件,在严格的阅读器里一片空白,展平时还会失败。位于 CropBox 之外的控件——存在、有值、看不见。不属于任何字段的孤立控件。开启的 /NeedAppearances,实际含义是这些值只在会重新生成外观的阅读器里才可见。
它无法告诉你什么
它读取的是已保存的结构,不会执行表单的 JavaScript,所以计算字段显示的是最后保存的值,而不是脚本会算出的值。它也不会依据任何规范来校验表单。
隐私
PDF 使用 pdf-lib 和 pdf.js 在你的浏览器中解析。没有任何内容被上传,JSON 与 CSV 导出也都在本地生成。
Tiny Online Tools







