Scambio di annotazioni via C ABI Linux nativa

hpdf_document_execute_json_v1 espone annotations.export e annotations.import attraverso il descrittore di operazione versionato esistente e le interfacce IO via callback

Caricare prima il PDF nel contesto del documento; l'import delle annotazioni usa InputIO per i byte XFDF, OutputIO per il PDF salvato e ResultIO per i metadati del risultato JSON

{"schemaVersion":1,"type":"annotations.export","format":"xfdf"}

L'export scrive XFDF UTF-8 su OutputIO e riporta annotationCount, skippedAnnotationCount, decodedAttachmentBytes e outputBytes

{"schemaVersion":1,"type":"annotations.import","format":"xfdf",
 "annotationLimits":{"maxBytes":1048576,"maxAnnotations":1000,
 "maxNodes":100000,"maxDepth":32,"maxWorkingBytes":67108864}}

L'import riporta updated e annotationProfile, poi adotta la revisione salvata solo dopo che entrambi i callback PDF e di risultato riescono

I fallimenti dei callback di input/output, dei callback di risultato e la cancellazione preservano l'esatto contesto committed in precedenza; i callback esterni potrebbero aver già ricevuto uno stream parziale prima di un fallimento successivo

Il JSON di capability annuncia annotationData con il profilo dei tipi mappati, la modalità append di import, i dati incorporati, le forward reply e gli oggetti popup; appearanceImport è false

I limiti delle annotazioni possono abbassare le capacità dell'operazione e non aumentarle; MaxBytes è inoltre limitato dalla memoria di operazione divisa per 64, la working storage dalla metà della memoria di operazione, e i byte di export dal limite di output

L'import accetta l'oggetto signaturePolicy esistente per le impostazioni di verifica CAdES, trust e timestamp, e fa rispettare i permessi di annotazione e la policy DocMDP autenticata

Gli import ABI vuoti conservano i byte PDF committed restituendo zero aggiornamenti

Le destinazioni named ed esplicite locali e le azioni GoTo preservano riferimenti di pagina reali e coordinate decimali esatte limitate tramite il codec delle annotazioni condiviso

Il SONAME dell'ELF e la versione dei simboli HOTPDF_1.0 restano invariati, e i consumer C esistenti continuano a usare lo stesso descrittore pubblico di operazione

Profilo mappato e API nativa · C ABI Linux · Operazioni sui form data

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

Operazioni sui grafi di oggetti FDF

{"schemaVersion":1,"type":"annotations.import","format":"fdf"}

Selezionare format="fdf" per i grafi di annotazioni binari attraverso lo stesso descrittore di operazione e i callback InputIO, OutputIO e ResultIO; annotations.export scrive byte FDF su OutputIO

Il profilo FDF conserva le risorse AP e RO fornite, oggetti indiretti condivisi e riferimenti di pagina GoTo locali sensibili al contesto; un NM di annotazione corrispondente sulla stessa pagina identifica una sostituzione, mentre le annotazioni senza nome o senza corrispondenza vengono accodate

Un import FDF riuscito riporta annotationProfile="pdf-object-graph-v1" e un conteggio intero updated; un'operazione con zero aggiornamenti preserva gli esatti ultimi byte PDF confermati

I annotationLimits FDF accettano anche maxObjects; tutti i limiti restano vincolati dall'operazione che li racchiude, con fallimento e cancellazione che conservano le garanzie transazionali dei callback esistenti

Le operazioni di sole annotazioni rifiutano Fields non vuoti e Differences incorporati; i dati delle azioni vengono trasportati senza eseguirli

Per il comportamento e i confini del grafo FDF vedere lo scambio FDF nativo delle annotazioni e per i limiti FDF nativi THPDFFDFOptions

Rimozione delle annotazioni

{"schemaVersion":1,"type":"annotations.remove","annotations":[{"page":0,"name":"review-note"}]}

annotations.remove usa il documento corrente o un PDF indipendente fornito tramite InputIO, poi pubblica OutputIO PDF e ResultIO JSON prima di confermare il contesto

Il risultato riporta removed e annotationProfile="page-and-nm-removal-v1"; annotationLimits limita conteggio di annotazioni, operazioni, byte dei nomi e archiviazione di lavoro

Fallimento o cancellazione preservano il contesto confermato; i caller preparano da soli i sink dei callback perché i byte già scritti non possono essere retratti