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