註解移除 JSON 與 callback 操作

Windows 與原生 Linux C ABI 操作入口接受 annotations.remove;請求 JSON 選擇註解,PDF 位元組經 callback 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 時,移除作用於 handle 目前已提交的文件;明確的輸入 IO 提供獨立 PDF 並私下暫存,而不是在操作成功前替換目前 context

加密輸入的驗證需要時提供 password;實際註解權限與簽章文件政策仍然生效

PDF 輸出 IO 與結果 IO 是獨立的接收端;引擎準備候選、發佈其 PDF、發佈有界 JSON 結果、檢查取消,然後才替換 handle 的目前文件

讀取、寫入、結果發佈、政策、預算或取消失敗會保留之前提交的 context,並允許在該 handle 上正常重試

當後續寫入、結果 callback 或取消失敗時,callback 接收端可能已包含位元組;context 復原無法收回那些外部位元組,因此呼叫端必須以交易方式暫存與發佈自己的接收端

對已提交結果重複移除回傳零並發佈精確的目前修訂;只在檢查操作狀態之後再比較 callback 輸出

結果與限制

成功結果包含 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 檔案作業