Scambio XFDF delle annotazioni su Windows

I file job Windows e hpdf_document_execute_json_v1 esportano le annotazioni mappate e aggiungono annotazioni XFDF tramite il bridge transazionale Windows autenticato

I tipi e le proprietà mappate sono condivisi con l'XFDF delle annotazioni native, inclusi stream binari limitati per allegati e suoni, rich content Unicode, oggetti popup e forward reply

File job

{
  "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 lo stesso format, input, output e password opzionale, scrivendo XFDF UTF-8 invece di un PDF; l'import richiede annotationInput

L'output non deve essere un alias dell'input PDF, dell'input XFDF o dei file di trust ed evidence forniti, incluso un hard link esistente; la pubblicazione riserva un sibling temporaneo esclusivo, valida i risultati limitati, esegue flush e close della candidate, poi sostituisce il target in modo atomico

Fallimento e cancellazione preservano un target completo esistente e rimuovono il file temporaneo dell'operazione

Callback V1 originali

Usare gli invariati hpdf_operation_v1 e hpdf_io_v1 di hotpdf_abi.h; lo scambio di annotazioni non richiede l'estensione font

Caricare prima il PDF di destinazione con hpdf_document_load_from_io; l'import legge l'XFDF da InputIO, scrive la candidate PDF su OutputIO e scrive il JSON limitato su ResultIO; l'export legge il PDF posseduto attivo e scrive l'XFDF su OutputIO

Per input cifrato, ripetere la password di operazione usata per autenticare il PDF caricato; questa operazione non conserva una password implicita dalla precedente chiamata di load

Solo i callback PDF e di risultato riusciti seguiti dal checkpoint finale di cancellazione adottano il nuovo documento e la revisione posseduta; input, output o callback di risultato falliti, XML malformato, limiti esauriti e cancellazione conservano il contesto precedente

I callback possono ricevere byte della candidate prima di un fallimento successivo; pubblicare una destinazione di proprietà del chiamante solo dopo che HPDF_STATUS_OK viene restituito

Policy, limiti e risultati

L'import autentica l'integrità delle firme esistenti e il binding ESS del firmatario; P1 e P2 negano modifiche alle annotazioni, mentre P3 permette una revisione delle annotazioni che conservi i byte firmati originali

Gli import AES-256 R5/R6 preservano i parametri di cifratura e il prefisso di revisione originale; un import vuoto autentica la policy e preserva i byte correnti esatti

signaturePolicy accetta i requisiti Boolean esistenti di trust/timestamp/revocazione e i trust path espliciti descritti nello scambio di form data su Windows

annotationLimits può abbassare maxBytes, maxAnnotations, maxNodes, maxDepth e maxWorkingBytes; i valori sono numeri JSON interi positivi e non possono alzare i default calcolati

Si applicano anche i budget di lavoro, output, risultato, oggetti e pagine; le operazioni via callback accettano elapsedMilliseconds come deadline aggiuntiva più stretta

L'export riporta annotationCount, skippedAnnotationCount, decodedAttachmentBytes e outputBytes; l'import riporta updated, outputBytes e annotationProfile uguale a mapped-annotations-v1

Confini

Le capability annunciano lo scambio di annotazioni tramite file-job e execute-json-v1, con import append-only, appearanceImport=false generale e stampAppearanceImport=true con ambito

Il trasporto standard delle appearance dei timbri preserva stream Form effettivi e risorse acicliche limitate di font, immagini e grafica attraverso XML tipizzato base64

La sintassi AP XFDF generale, la sostituzione/rimozione di annotazioni XFDF e le azioni XFDF più ampie restano lavori separati; le azioni GoToR remote e le destinazioni locali usano i loro profili limitati esistenti

La generica ExecuteLoadedOperation e il vecchio record di callback via job handle sono entry point separati; i chiamanti Pascal possono usare la classe di transazione esplicita

Scambio FDF binario

Gli stessi file job e callback V1 accettano format="fdf"; gli import da file leggono FDF binario da annotationInput e le esportazioni scrivono FDF binario sull'output selezionato

Il profilo del grafo di oggetti FDF conserva le risorse di appearance fornite e gli oggetti indiretti condivisi, e supporta la sostituzione tramite un NM di annotazione non vuoto corrispondente sulla stessa pagina

L'import FDF restituisce annotationProfile="pdf-object-graph-v1"; updated conta le modifiche effettive delle annotazioni, e un import equivalente conserva la revisione corrente esatta

FDF aggiunge maxObjects ai controlli annotationLimits di interi positivi e usa la politica autenticata esistente, la pubblicazione limitata dei candidati e le regole di proprietà dei callback

I caller Pascal possono usare THPDFWindowsFormDataTransaction.ExportAnnotationsFDF e ImportAnnotationsFDF; ChangedAnnotations riporta le modifiche effettive di questo profilo

Fields FDF non vuoti e Differences incorporati richiedono una gestione separata e fanno fallire le operazioni di sole annotazioni prima della pubblicazione

La rimozione delle annotazioni Windows fornisce una transazione preparata e un job JSON separati per identità esatte pagina-e-NM senza cambiare la semantica append dell'XFDF mappato