注释移除 JSON 与回调操作

Windows 和原生 Linux C ABI 操作入口接受 annotations.remove;请求 JSON 选择注释,PDF 字节经回调 IO 传输而不是内嵌在 JSON 里

{
  "schemaVersion": 1,
  "type": "annotations.remove",
  "annotations": [{"page": 0, "name": "review-note"}],
  "annotationLimits": {
    "maxAnnotations": 4096,
    "maxOperations": 1000000,
    "maxNameBytes": 1048576,
    "maxWorkingBytes": 33554432
  }
}

annotations 必须是对象数组,每个对象包含在实际输入文档内的整数 page 和非空字符串 name;名称与解码后的 Unicode NM 精确匹配

空数组或未匹配的有效标识是 no-op;重复选择器、有歧义的选中名称、畸形的注释归属和 Widget 选择会失败

输入与发布生命周期

没有输入 IO 时,移除作用于句柄当前已提交的文档;显式输入 IO 提供独立 PDF 并私下暂存,而不是在操作成功前替换当前上下文

加密输入的认证需要时提供 password;实际注释权限和签名文档策略仍然生效

PDF 输出 IO 和结果 IO 是独立的接收端;引擎准备候选、发布其 PDF、发布有界 JSON 结果、检查取消,然后才替换句柄的当前文档

读取、写入、结果发布、策略、预算或取消失败会保留之前提交的上下文,并允许在该句柄上正常重试

当后续写入、结果回调或取消失败时,回调接收端可能已包含字节;上下文回滚无法收回那些外部字节,因此调用方必须以事务方式暂存和发布自己的接收端

对已提交结果重复移除返回零并发布精确的当前修订;只在检查操作状态之后再比较回调输出

结果与限制

成功结果包含 schemaVersion: 1、statusCode: 0、status: "ok"、removed、mediaType: "application/pdf" 和 annotationProfile: "page-and-nm-removal-v1"

removed 包含 popup 和回复级联,即使依赖形成环也只对每个注释计一次

annotationLimits 降低 THPDFHeadlessAnnotationRemovalOptions 描述的有效正容量;操作内存、对象、页面、输出、结果和耗时限制保持独立

可选的 signaturePolicy 配置既有的经认证 CMS 策略,包括操作入口支持的必需 CAdES、时间戳和信任要求

实际移除受 AES 注释权限和经认证的 P1/P2/P3 认证策略约束;密码检查成功或未签名的错误消息不是权限或受信任认证的证据

失败时检查返回的操作状态和可用的结构化错误结果;结果接收端失败可能阻碍完整错误 JSON 文档的送达

相关内容见原生移除语义和普通 Windows 文件作业