对于使用分层 PDF 作为主要可交付格式的技术插画师和图形设计师来说,按图层而不是按可视矩形进行编辑的能力从根本上改变了文档移交工作流程。设计人员可以在专用元数据层上准备包含所有客户信息的单个主文件,交付删除该层的文件以供公共分发,并保留完整的元数据层主文件以供内部参考。这种单一来源方法消除了文档的内部副本和公共副本之间版本不匹配的风险。
PDF 层 编辑方法对于不同审阅者需要访问不同信息集的多利益相关者项目特别有价值。审查施工图的工程师可能需要所有可见的技术层,而成本估算人员只需要尺寸和数量层。将修订应用于特定于角色的层的单个源文件可以为所有各方提供服务,而无需文档作者维护单独的版本。
对于受 GDPR、HIPAA 或 CCPA 等数据保护法规约束的组织来说,按层编辑的能力可提供额外的合规性优势。分发文档时,所有非敏感层都对普通员工可见,而敏感信息层则被删除或替换。同一源文件服务于所有受众级别,并且在层级别应用修订,而不是通过维护文档的多个单独的修订副本。这减少了版本控制开销,并确保所有接收者都使用相同的底层文档结构进行工作,并且只能访问适合其许可级别的层。
由多个可选内容组(通常称为图层)构建的 PDF 文档可以在一层中存储文本内容,在另一层中存储图像和照片,在第三层中存储注释和评论,在第四层中存储水印或信纸模板等背景元素。当您需要删除或隐藏仅存在于一个特定图层中的敏感信息,同时保持所有其他图层完全可见和交互时,将所有图层展平为单个图像,然后在展平结果上刻录不透明黑色矩形的标准编辑工具将不起作用。层结构被破坏,本应保持可见的内容与敏感信息一起丢失。理解并尊重可选内容组结构的LO0§PDF修订方法可以逐层定位内容,从特定命名的OCG中删除或隐藏数据,同时保留所有其他层的完整和功能。
这种情况会出现在多种专业环境中。工程公司使用分层 PDF 将建筑平面图与电气、管道和 HVAC 覆盖图分离到单个文件中。从标题块图层编辑机密客户名称不得影响平面图、尺寸标注或注释图层。政府机构发布分层 PDF,其中一层为底图,另一层为敏感基础设施详细信息。多语言出版商将每个翻译存储在自己的层上。在每种情况下,编辑都必须是外科手术:仅限于一层。

PDF 可选内容组如何独立存储内容
可选内容组在 PDF 版本 1.5 中引入,现已完全纳入 ISO 32000 标准(Adobe,“PDF Reference 1.7”,2006)。每个 OCG 都是一个命名的、逻辑上独立的页面内容集合,查看器应用程序可以根据用户的判断打开或关闭该内容。文档目录包含一个 OCProperties 字典,该字典按名称列出每个 OCG,并将每个 OCG 映射到属于它的内容流对象。一个页面可以引用多个内容流,并且每个流可以被标记为属于一个或多个 OCG。
由于每一层的内容都存储在 PDF 对象结构内离散的、可识别的内容流对象中,因此在技术上可以编辑、修改或完全删除某一层的内容,而不会影响任何其他层中存储的数据。了解 OCG 架构的LO0§PDF Redaction工具可以通过名称定位与目标层关联的内容流,并仅删除或替换那些特定的流。然而,忽略 OCG 边界的标准修订工具通常会在应用修订标记之前将所有可见图层展平为单个渲染的位图图像。此展平步骤将所有图层永久合并在一起并破坏原始图层组织。
尝试编辑 PDF
无需安装。直接在您的浏览器中工作。
识别哪一层包含要编辑的信息
在执行任何编辑之前,您必须准确确定哪个 OCG 名称或标识符包含要删除的内容。在任何在用户界面中显示“图层”面板的查看器中打开 PDF。 Adobe Acrobat Pro、Foxit PDF Editor、Bluebeam Revu 和一些开源 PDF 查看器通常在左侧边栏面板中显示可切换图层列表。每次关闭每一层,同时观察哪些内容从页面显示中消失。将每个图层名称映射到其视觉内容。记录面板中显示的确切 OCG 名称字符串,包括大写、空格和任何特殊字符。
对于编程识别,请使用 PDF 结构检查工具,例如带有“-struct”标志的“pdfinfo”或使用 pikepdf 库的 Python 脚本。文档目录内的 OCProperties 字典将每个 OCG 名称映射到属于该层的内容流对象引用列表。 pikepdf 中的代码“pdf.Root.OCProperties”返回完整的 OCG 结构,然后您可以遍历该结构以将图层名称与其关联的内容流相匹配。
通过从每个页面删除目标层内容流进行编辑
最精确的方法是从页面的内容数组中仅删除属于目标 OCG 的内容流对象。此方法需要一个工具或脚本,可以从文档目录中读取 OCG 到内容的映射,识别与目标图层名称关联的每个内容流对象引用,并从每个页面的内容流列表中删除这些特定对象引用。所有其他内容流保持不变并继续正常渲染。 Python 的 pikepdf 库本身支持这种对象级操作,基于 Java 的 Apache PDFBox 库也是如此。
下表比较了分层 PDF 的可用编辑方法:
| 方法 | 保留层 | 去除精度 | 所需技能等级 |
|---|---|---|---|
| pikepdf / Python 脚本 | 是的,所有其他层都完好无损 | 手术式、单独的内容流删除 | 中级Python编程 |
| Adobe Acrobat Pro 图层面板 | 是的,如果使用图层删除 | 好,通过 GUI 按图层名称删除 | 基本的点击式界面 |
| 展平和编辑(标准工具) | 不,破坏所有层组织 | 差劲,将所有内容刻录成一张扁平图像 | 基本但破坏结构 |
通过使用不透明蒙版替换目标图层内容进行编辑
在完全删除图层会扰乱依赖于特定图层计数或命名约定的下游工作流程的情况下,替代技术将目标图层的内容替换为相同尺寸的不透明矩形。替换对象保留在同名 OCG 内,因此图层切换在查看器中仍然有效,但存储在该图层中的敏感内容已被空白蒙版替换。不使用稍后查看者可以删除的黑盒覆盖。原始内容数据将从内容流中永久删除并替换。
此方法对于 CAD 或 BIM 软件需要一组具有特定名称的固定图层的工程和建筑文档特别有效。当在创作应用程序中重新打开文件时,完全删除图层会导致错误或警告。替换层内的敏感内容同时保持层容器本身存在既满足安全要求又满足软件兼容性要求。
验证没有敏感内容泄漏到其他层
现实 PDF 中的内容标记很少像图层面板所显示的那样干净。创作应用程序可能已将逻辑上属于注释层的文本对象写入默认内容流而不是注释特定内容流中。在完成密文文档之前,关闭除目标密文层之外的所有层,并确认敏感内容从视图中完全消失。然后使用文本提取工具或“grep”等命令针对未压缩的 PDF 数据搜索整个 PDF 的原始文本内容。如果敏感文本字符串的任何片段出现在搜索结果中,则该数据存在于目标图层之外的某个位置,并且需要单独的额外密文处理。
WukongPDF 的PDF 编辑 工具在内容流级别上运行,当在文档中标识层结构时,可以按名称定位特定的可选内容组。密文仅应用于选定的图层,保留输出文档中所有其他图层的可见性和交互性。
对于具有法律、监管或隐私影响的文档,还要验证文档的元数据流、片段信息字典以及任何嵌入的缩略图或页面预览图像中是否不存在已删除的内容。完整的验证通过包括检查所有五个存储位置。将分层内容与密文要求相结合的 PDF 需要在对象模型级别(而不是渲染像素级别)运行的工具。通过名称识别正确的目标 OCG,仅删除或替换该层的内容流,然后彻底验证目标层之外没有残留数据,从而生成经过编辑的 PDF,其中所有剩余层都保持完整的功能、交互性和可视性。
尝试编辑 PDF
无需安装。直接在您的浏览器中工作。
