图层是什么
一个 PDF 可以在同一个文件里承载多套彼此叠加的图形,并让阅读者在它们之间切换。这套机制叫可选内容,每一块可切换的部分叫可选内容组(OCG)。CAD 和插画工具一直在用它:尺寸标注、剖面线、辅助线、修订云线、语言版本、仅供印刷的标记。
大多数 PDF 一个图层都没有。这很正常,本工具会直说,而不是抛出一个错误。
切换是真的会重绘
树里的每一个开关都会改变 pdf.js 可选内容配置中的可见性并重新渲染页面,所以你看到的就是阅读器在这些图层开启时会呈现的样子,而不是模拟效果。
单选图层组会被遵守:/RBGroups 声明了一批集合,其中至多只能有一个图层可见;打开其中一个成员会关闭其他成员,和阅读器的行为完全一致。
对象图能补充什么
pdf.js 只报告名称和可见性。其余都必须直接从 /OCProperties 读取,而这部分往往出人意料:
/D /BaseState——取值/OFF表示除/ON里列出的组之外,一切都从隐藏开始。/D /Locked——阅读器根本不允许读者切换的图层。/D /AS——用途应用字典。图层在打印、导出或缩放超过阈值时自行关闭,靠的就是它。- 每个组的
/Usage——/Print /PrintState /OFF是个真正的坑:图层在屏幕上看起来没问题,印到纸上却根本不存在。 /Intent——用途为/Design而非/View的组,会被普通阅读器完全忽略。- 哪些页面引用了每个组,通过扫描
/Resources /Properties、带/OC的表单 XObject 以及带/OC的注释得出。没有任何引用的组,虽然被声明了,却一滴墨也不落。
压平
你可以导出一份把当前可见状态固化进去的副本。工具会遍历每一页的内容流,丢弃隐藏组的 /OC … BDC … EMC 区段——并对嵌套的标记内容计数,以便匹配到正确的 EMC——隐藏的表单 XObject 和注释也一并去掉,然后删除 /OCProperties。
随后这个结论会通过渲染来核对:用你选择的设置渲染原文件,直接渲染压平后的文件,并报告每页最大的像素差异。如果两者都与文件的默认视图完全相同,工具会照实说明,而不是暗示自己改动了什么。
隐私
文件的读取、切换和写出全部在你的浏览器中完成。没有任何上传。
Tiny Online Tools







