Windows annotation XFDF exchange
Windows file-jobs en hpdf_document_execute_json_v1 exporteren mapped annotaties en voegen XFDF-annotaties toe via de geauthenticeerde Windows-transactiebrug
De mapped types en properties worden gedeeld met native annotation XFDF, inclusief begrensde binaire attachment/sound-streams, Unicode rich contents, popup-objecten en forward replies
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 gebruikt hetzelfde formaat, invoer, uitvoer en optionele wachtwoord, en schrijft UTF-8 XFDF in plaats van een PDF; import vraagt annotationInput
Uitvoer mag niet aliasen met de PDF-invoer, XFDF-invoer of meegeleverde trust/evidence-bestanden, inclusief een bestaande hard link; publicatie reserveert een exclusieve tijdelijke sibling, valideert begrensde resultaten, flußt en sluit de candidate en vervangt daarna atomair de target
Falen en annulering behouden een bestaande complete target en verwijderen het tijdelijke bestand van de operatie
Originele V1-callbacks
Gebruik de ongewijzigde hpdf_operation_v1 en hpdf_io_v1 uit hotpdf_abi.h; annotatie-uitwisseling vraagt geen font-extensie
Laad eerst de destination-PDF met hpdf_document_load_from_io; import leest XFDF vanuit InputIO, schrijft de candidate-PDF naar OutputIO en schrijft begrensde JSON naar ResultIO; export leest de actieve owned PDF en schrijft XFDF naar OutputIO
Voor versleutelde invoer: herhaal het operation-wachtwoord dat werd gebruikt om de geladen PDF te authentiseren; deze operatie houdt geen impliciet wachtwoord vast vanuit de eerdere load-aanroep
Alleen geslaagde PDF- en result-callbacks gevolgd door het finale annuleringscheckpoint adopteren het nieuwe document en de owned revisie; gefaalde invoer-, uitvoer- of result-callbacks, misvormde XML, uitgeputte limieten en annulering behouden de vorige context
Callbacks kunnen candidate-bytes ontvangen vóór een latere fout; publiceer een destination in caller-eigendom alleen nadat HPDF_STATUS_OK terugkeert
Beleid, limieten en resultaten
Import authenticeert bestaande signature-integriteit en ESS-signer-binding; P1- en P2-certificering ontzegt annotatiewijzigingen, terwijl P3 een annotatierevisie toestaat die de originele signed bytes behoudt
AES-256 R5/R6-imports behouden encryptieparameters en de originele revisie-prefix; een lege import authenticeert beleid en behoudt de exacte huidige bytes
signaturePolicy accepteert de bestaande Boolean trust/timestamp/revocation-vereisten en expliciete trust-paden beschreven in Windows form-data exchange
annotationLimits kan maxBytes, maxAnnotations, maxNodes, maxDepth en maxWorkingBytes verlagen; waarden zijn positieve integer JSON-getallen en kunnen de berekende defaults niet verhogen
Working-, uitvoer-, resultaat-, object- en paginabudgetten gelden ook; callback-operaties accepteren elapsedMilliseconds als extra strakkere deadline
Export rapporteert annotationCount, skippedAnnotationCount, decodedAttachmentBytes en outputBytes; import rapporteert updated, outputBytes en annotationProfile gelijk aan mapped-annotations-v1
Grenzen
Capabilities adverteren annotatie-uitwisseling via file-job en execute-json-v1, met append-only import, algemene appearanceImport=false en scoped stampAppearanceImport=true
Standard stamp appearance transport behoudt echte Form-streams en begrensde acyclische font-, image- en graphics-resources via base64 typed XML
Algemeen AP-transport, annotatievervanging/-verwijdering, bredere actions en FDF-annotatiedata blijven apart werk; remote GoToR-actions en lokale destinations gebruiken diens bestaande begrensde profielen
De generieke ExecuteLoadedOperation en het oudere job-handle-callback-record zijn aparte entrypoints; Pascal-aanroepers kunnen de expliciete transaction class gebruiken