Troca de anotações pela ABI C nativa de Linux
hpdf_document_execute_json_v1 expõe annotations.export e annotations.import através das interfaces existentes versionadas de descritores de operações e de IO por callbacks
Carregue primeiro o PDF no contexto do documento; a importação de anotações usa InputIO para os bytes XFDF, OutputIO para o PDF guardado e ResultIO para os metadados JSON de resultados
{"schemaVersion":1,"type":"annotations.export","format":"xfdf"}
A exportação escreve XFDF UTF-8 em OutputIO e reporta annotationCount, skippedAnnotationCount, decodedAttachmentBytes e outputBytes
{"schemaVersion":1,"type":"annotations.import","format":"xfdf",
"annotationLimits":{"maxBytes":1048576,"maxAnnotations":1000,
"maxNodes":100000,"maxDepth":32,"maxWorkingBytes":67108864}}
A importação reporta updated e annotationProfile, e depois adota a revisão guardada apenas depois de os callbacks de PDF e de resultado terem sucesso
Falhas de callbacks de entrada/saída, falhas do callback de resultado e cancelamento preservam o contexto exato previamente confirmado; callbacks externos já podem ter recebido uma stream parcial antes de uma falha posterior de callback
O JSON de capacidades anuncia annotationData com o perfil mapeado de tipos, modo de importação por acrescento, dados incorporados, respostas antecipadas e objetos popup; appearanceImport é false
Os limites de anotações podem baixar as capacidades da operação e não as podem aumentar; MaxBytes também é limitado pela memória da operação dividida por 64, o armazenamento de trabalho por metade da memória da operação, e os bytes de exportação pelo limite de saída
A importação aceita o objeto signaturePolicy existente para definições de verificação CAdES, de confiança e de timestamps, e impõe permissões de anotações e a política autenticada DocMDP
Importações ABI vazias retêm os bytes PDF confirmados enquanto devolvem zero atualizações
Destinos locais nomeados e explícitos e ações GoTo preservam referências reais de páginas e coordenadas decimais exatas delimitadas através do codec partilhado de anotações
O SONAME ELF e a versão de símbolos HOTPDF_1.0 permanecem inalterados, e os consumidores C existentes continuam a usar o mesmo descritor público de operações
Perfil mapeado e API nativa · ABI C de Linux · Operações de dados de formulários
O transport de aparências de stamps standard preserva streams de Form reais e recursos delimitados e acíclicos de tipos de letra, imagens e gráficos através de XML tipado em base64
Operações de grafos de objetos FDF
{"schemaVersion":1,"type":"annotations.import","format":"fdf"}
Selecione format="fdf" para grafos de anotações binários pelo mesmo descritor de operação e callbacks InputIO, OutputIO e ResultIO; annotations.export escreve bytes FDF no OutputIO
O perfil FDF preserva recursos AP e RO fornecidos, objetos indiretos partilhados e referências contextuais de páginas GoTo locais; um NM de anotação correspondente na mesma página identifica uma substituição, enquanto anotações sem nome ou sem correspondência são acrescentadas
Uma importação FDF bem-sucedida reporta annotationProfile="pdf-object-graph-v1" e uma contagem updated inteira; uma operação sem alterações preserva os exatos últimos bytes comprometidos do PDF
FDF annotationLimits também aceita maxObjects; todos os limites permanecem restringidos pela operação envolvente, com falha e cancelamento a reterem as garantias existentes de transações de callbacks
As operações apenas de anotações rejeitam Fields não vazios e Differences incorporados; os dados de ações são transportados sem serem executados
Veja o comportamento e as fronteiras do grafo FDF e os limites FDF nativos
Remoção de anotações
{"schemaVersion":1,"type":"annotations.remove","annotations":[{"page":0,"name":"review-note"}]}
annotations.remove usa o documento atual ou um PDF independente fornecido pelo InputIO e depois publica o PDF no OutputIO e o JSON no ResultIO antes de comprometer o contexto
O resultado reporta removed e annotationProfile="page-and-nm-removal-v1"; annotationLimits delimita a contagem de anotações, operações, bytes de nomes e armazenamento de trabalho
Falha ou cancelamento preserva o contexto comprometido; os callers fazem o stage dos sinks de callbacks eles próprios porque bytes já escritos não podem ser retraídos