Troca de anotações XFDF no Windows

File jobs do Windows e hpdf_document_execute_json_v1 exportam anotações mapeadas e anexam anotações XFDF através da ponte autenticada transacional do Windows

Os tipos e propriedades mapeados são compartilhados com o XFDF nativo de anotações, incluindo streams delimitados de attachments/sons binários, rich contents Unicode, objetos popup e replies para frente

File jobs

{
  "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 usa o mesmo formato, entrada, saída e senha opcionais, gravando XFDF UTF-8 em vez de um PDF; o import exige annotationInput

A saída não pode ser alias da entrada PDF, da entrada XFDF nem dos arquivos fornecidos de confiança/evidências, incluindo um hard link existente; a publicação reserva um irmão temporário exclusivo, valida resultados delimitados, faz flush e fecha o candidato, e depois substitui atomicamente o alvo

Falha e cancelamento preservam um alvo completo existente e removem o arquivo temporário da operação

Callbacks V1 originais

Use o hpdf_operation_v1 e o hpdf_io_v1 inalterados de hotpdf_abi.h; a troca de anotações não exige extensão de fontes

Carregue o PDF de destino com hpdf_document_load_from_io primeiro; o import lê XFDF do InputIO, grava o PDF candidato no OutputIO e grava JSON delimitado no ResultIO; o export lê o PDF ativo próprio e grava XFDF no OutputIO

Para entrada criptografada, repita a senha da operação usada para autenticar o PDF carregado; esta operação não retém uma senha implícita da chamada anterior de load

Apenas callbacks bem-sucedidos de PDF e resultado seguidos do checkpoint final de cancelamento adotam o documento novo e a revisão própria; callbacks de entrada, saída ou resultado com falha, XML malformado, limites esgotados e cancelamento retêm o contexto anterior

Callbacks podem receber bytes candidatos antes de uma falha posterior; publique um destino de posse do chamador somente depois que HPDF_STATUS_OK retornar

Políticas, limites e resultados

O import autentica a integridade existente de assinaturas e o binding ESS de signers; certificação P1 e P2 nega mudanças de anotações, enquanto P3 permite uma revisão de anotações que retém os bytes originais assinados

Imports AES-256 R5/R6 preservam os parâmetros de criptografia e o prefixo original da revisão; um import vazio autentica a política e preserva os bytes atuais exatos

signaturePolicy aceita os requisitos existentes Booleanos de confiança/timestamp/revogação e os paths de confiança explícitos descritos na troca de form data no Windows

annotationLimits pode reduzir maxBytes, maxAnnotations, maxNodes, maxDepth e maxWorkingBytes; os valores são números JSON inteiros positivos e não podem elevar os defaults computados

Os orçamentos de trabalho, saída, resultado, objetos e páginas também se aplicam; operações de callbacks aceitam elapsedMilliseconds como um deadline adicional mais justo

O export reporta annotationCount, skippedAnnotationCount, decodedAttachmentBytes e outputBytes; o import reporta updated, outputBytes e annotationProfile igual a mapped-annotations-v1

Fronteiras

As capabilities anunciam a troca de anotações através de file-job e execute-json-v1, com import append-only, appearanceImport=false geral e stampAppearanceImport=true delimitado

O transporte de aparências padrão de stamps preserva streams reais de Forms e recursos acíclicos delimitados de fontes, imagens e gráficos através de typed XML em base64

Transporte geral de APs, substituição/remoção de anotações, actions mais amplas e dados FDF de anotações permanecem trabalho separado; actions GoToR remotas e destinos locais usam seus perfis delimitados existentes

O ExecuteLoadedOperation genérico e o record mais antigo de callbacks de handles de jobs são entry points separados; chamadores Pascal podem usar a classe Transaction explícita

Troca FDF binária

Os mesmos file jobs e callbacks V1 aceitam format="fdf"; imports de arquivos leem FDF binário de annotationInput, e exports escrevem FDF binário na saída selecionada

O perfil de grafo de objetos FDF preserva recursos de aparências fornecidos e objetos indiretos compartilhados e suporta substituição por um NM de anotação não vazio correspondente na mesma página

Import FDF retorna annotationProfile="pdf-object-graph-v1"; updated conta mudanças reais de anotações, e um import equivalente preserva a revisão atual exata

FDF adiciona maxObjects aos controles annotationLimits inteiros positivos e usa a política autenticada existente, publicação delimitada de candidates e regras de posse de callbacks

Callers Pascal podem usar THPDFWindowsFormDataTransaction.ExportAnnotationsFDF e ImportAnnotationsFDF; ChangedAnnotations reporta mudanças reais para este perfil

Fields FDF não vazios e Differences embutidos exigem tratamento separado e fazem operações apenas de anotações falharem antes da publicação

Remoção de anotações no Windows fornece uma transação preparada separada e um job JSON para identidades exatas de página e NM sem mudar a semântica de anexos do XFDF mapeado