Windows annotation XFDF 교환

Windows 파일 잡과 hpdf_document_execute_json_v1은 인증된 Windows 트랜잭션 브리지를 통해 매핑된 annotation을 내보내고 XFDF annotation을 추가합니다

매핑된 타입과 속성은 네이티브 annotation XFDF와 공유됩니다. 제한된 바이너리 첨부/사운드 스트림, Unicode 리치 콘텐츠, popup 객체, 전달 답장을 포함합니다

파일 잡

{
  "schemaVersion": 1, "type": "annotations.import", "format": "xfdf",
  "input": "source.pdf", "annotationInput": "annotations.xfdf",
  "output": "annotated.pdf", "password": "owner",
  "annotationLimits": {"maxBytes": 1048576, "maxAnnotations": 1000},
  "budget": {"memoryBytes": 268435456, "outputBytes": 134217728,
    "timeMilliseconds": 60000, "resultBytes": 16777216}
}

annotations.export는 같은 format, input, output, 선택적 password를 쓰며 PDF가 아니라 UTF-8 XFDF를 씁니다. 임포트에는 annotationInput이 필요합니다

출력은 PDF 입력, XFDF 입력, 공급된 신뢰/증거 파일과 별칭이 되어서는 안 되며, 기존 하드 링크도 포함입니다. 발행은 배타적 임시 형제 파일을 예약하고, 제한된 결과를 검증하고, 후보를 플러시·닫은 뒤 대상을 원자적으로 교체합니다

실패와 취소는 기존의 완전한 대상을 보존하고 연산의 임시 파일을 제거합니다

원래 V1 콜백

hotpdf_abi.h의 변경 없는 hpdf_operation_v1과 hpdf_io_v1을 쓰세요. annotation 교환에는 폰트 확장이 필요하지 않습니다

먼저 hpdf_document_load_from_io로 대상 PDF를 로드하세요. 임포트는 InputIO에서 XFDF를 읽고 후보 PDF를 OutputIO에 쓰며 제한된 JSON을 ResultIO에 씁니다. export는 활성 소유 PDF를 읽고 XFDF를 OutputIO에 씁니다

암호화된 입력에는 로드한 PDF를 인증할 때 쓴 연산 비밀번호를 반복해서 넘기세요. 이 연산은 이전 로드 호출의 암시적 비밀번호를 유지하지 않습니다

PDF와 결과 콜백이 성공하고 마지막 취소 체크포인트를 통과해야 새 문서와 소유 리비전이 채택됩니다. 입력·출력·결과 콜백 실패, 잘못된 XML, 소진된 한도, 취소는 이전 컨텍스트를 유지합니다

콜백은 이후 실패 전에 후보 바이트를 받을 수 있습니다. 호출자 소유 대상은 HPDF_STATUS_OK가 반환된 뒤에만 발행하세요

정책, 한도, 결과

임포트는 기존 서명 무결성과 ESS 서명자 바인딩을 인증합니다. P1과 P2 인증은 annotation 변경을 거부하고, P3은 원본 서명 바이트를 유지하는 annotation 리비전을 허용합니다

AES-256 R5/R6 임포트는 암호화 파라미터와 원본 리비전 접두부를 보존합니다. 빈 임포트는 정책을 인증하고 현재 정확한 바이트를 보존합니다

signaturePolicy는 Windows 폼 데이터 교환에 설명된 기존 Boolean 신뢰/타임스탬프/폐기 요구와 명시적 신뢰 경로를 받습니다

annotationLimits는 maxBytes, maxAnnotations, maxNodes, maxDepth, maxWorkingBytes를 낮출 수 있습니다. 값은 양수 정수 JSON 숫자이며 계산된 기본값을 올릴 수 없습니다

워킹, 출력, 결과, 객체, 페이지 예산도 적용됩니다. 콜백 연산은 더 타이트한 추가 마감으로 elapsedMilliseconds를 받습니다

익스포트는 annotationCount, skippedAnnotationCount, decodedAttachmentBytes, outputBytes를 보고하고, 임포트는 updated, outputBytes, mapped-annotations-v1과 같은 annotationProfile을 보고합니다

경계

Capabilities는 file-job과 execute-json-v1을 통해 주석 교환을 알립니다. append-only 가져오기, 일반 appearanceImport=false, 범위가 지정된 stampAppearanceImport=true가 함께 적용됩니다

표준 스탬프 appearance 전송은 base64 타입화 XML을 통해 실제 Form 스트림과 유계 비순환 폰트, 이미지, 그래픽 리소스를 보존합니다

일반 XFDF AP 문법, XFDF annotation 교체/제거, 더 넓은 XFDF 액션은 별도 작업으로 남습니다. 원격 GoToR 액션과 로컬 destination은 기존 유계 프로파일을 씁니다

제네릭 ExecuteLoadedOperation과 오래된 잡 핸들 콜백 레코드는 별도 진입점입니다. Pascal 호출자는 명시적 트랜잭션 클래스를 쓸 수 있습니다

바이너리 FDF 교환

같은 파일 작업과 V1 콜백이 format="fdf"를 받습니다. 파일 가져오기는 annotationInput에서 바이너리 FDF를 읽고, 내보내기는 선택한 출력에 바이너리 FDF를 씁니다

FDF 객체 그래프 프로파일은 공급된 appearance 리소스와 공유 간접 객체를 보존하고, 같은 페이지의 일치하는 비어 있지 않은 주석 NM으로 교체를 지원합니다

FDF 가져오기는 annotationProfile="pdf-object-graph-v1"을 반환합니다. updated는 실제 주석 변경을 세고, 동등한 가져오기는 정확한 현재 리비전을 유지합니다

FDF는 양의 정수 annotationLimits 제어에 maxObjects를 더하고 기존 인증 정책, 유계 후보 게시, 콜백 소유권 규칙을 씁니다

Pascal 호출자는 THPDFWindowsFormDataTransaction.ExportAnnotationsFDF와 ImportAnnotationsFDF를 쓸 수 있습니다. ChangedAnnotations는 이 프로파일의 실제 변경을 보고합니다

비어 있지 않은 FDF Fields와 내장 Differences는 별도 처리가 필요하며 게시 전에 주석 전용 연산을 실패시킵니다

Windows 주석 제거는 매핑 XFDF append 의미론을 바꾸지 않고 정확한 페이지와 NM identity를 위한 별개의 준비된 트랜잭션과 JSON 작업을 제공합니다