Troca FDF/XFDF no Windows

File jobs do Windows e hpdf_document_execute_json_v1 implementam forms.export e forms.import para fdf e xfdf usando os codecs nativos escalares e delimitados de XHTML/CSS rich

File jobs

{
  "schemaVersion": 1, "type": "forms.import", "format": "xfdf",
  "input": "source.pdf", "output": "filled.pdf", "password": "owner",
  "formDataInput": "values.xfdf",
  "fonts": {
    "regular": "DejaVuSans.ttf", "bold": "DejaVuSans-Bold.ttf",
    "italic": "DejaVuSans-Oblique.ttf", "boldItalic": "DejaVuSans-BoldOblique.ttf"
  },
  "budget": {"memoryBytes": 268435456, "outputBytes": 134217728,
    "timeMilliseconds": 60000, "resultBytes": 16777216}
}

forms.export usa input, output, format e senha opcional; ele não exige formDataInput nem fonts; file jobs reservam um candidato exclusivo ao lado do alvo, fazem flush e fecham o candidato, validam o JSON delimitado de resultados, e depois substituem o alvo atomicamente

Fontes ausentes, entrada malformada, falhas de autenticação ou de políticas, limites esgotados e publicação com falha preservam o alvo completo existente; a saída não pode ser alias da entrada PDF ou de form data, incluindo um hard link

Famílias de fontes nomeadas

forms.import aceita fontFamilies na raiz da operação como um array de um a dezesseis rótulos; a ausência retém o perfil original de família única e o rótulo de callbacks fontFamily

"fontFamilies": ["DejaVu Sans", "DejaVu Serif Condensed"],
"fonts": {
  "DejaVu Sans": {
    "regular": "DejaVuSans.ttf", "bold": "DejaVuSans-Bold.ttf",
    "italic": "DejaVuSans-Oblique.ttf", "boldItalic": "DejaVuSans-BoldOblique.ttf"
  },
  "DejaVu Serif Condensed": {
    "regular": "DejaVuSerifCondensed.ttf", "bold": "DejaVuSerifCondensed-Bold.ttf",
    "italic": "DejaVuSerifCondensed-Italic.ttf", "boldItalic": "DejaVuSerifCondensed-BoldItalic.ttf"
  }
}

Para file jobs, fonts contém objetos chaveados pelos rótulos exatos configurados; sem fontFamilies ele retém o objeto original direto de paths de estilos; leia apenas os programas reais de famílias/estilos, com todos os bytes selecionados de fontes compartilhando o orçamento da operação

Para callbacks V1 do Windows, o callback existente de fontes recebe cada rótulo canônico UTF-8 realmente configurado e o estilo selecionado; duas famílias usando todos os quatro estilos fazem oito requisições reais de programas sem mudar o record de callbacks

Letras ASCII de rótulos comparam sem maiúsculas, enquanto os demais caracteres Unicode comparam exatamente; rótulos são distintos, não vazios e de no máximo 128 code units UTF-16, sem whitespace nas bordas, controles, surrogates não pareados nem pontuação de aspas/separadores CSS

A primeira família configurada é a default para texto escalar e estilos rich herdados; por default, listas CSS font-family usam a seleção de primeira família conhecida do codec nativo

fallbackFontFamilies=true opt-in preserva candidatos ordered inline CSS de font-family e carrega programas reais configurados de faces/estilos para o fallback de graphemes completos; veja o fallback rich de fontes de famílias fornecidas no Windows para candidatos tipados, carregamento de callbacks e o escopo somente rich

O resultado aplicado reporta richXMLProfile inline-xhtml-font-families-v1, o array configurado fontFamilies e objetos reais fontFamilyStyles contendo família, estilo e bytes; fontStyles mantém seu tipo original de object-array e resume contagens de bytes por estilo; fontBytes conta todos os programas reais

Sem o array, richXMLProfile é inline-xhtml-v1; forms.fill misto de escalares e typed-rich original usa o binding separado original-typed-runs-v1 descrito adiante; a extensão mais antiga de callbacks de fontes de jobs permanece trabalho separado

Callbacks versionados C do Windows

Inclua hotpdf_abi_form_data.h; preencha hpdf_form_data_operation_v1, defina operation.struct_size como o tamanho completo dele, e passe o prefixo inalterado de operações dele a hpdf_document_execute_json_v1

O callback opcional de fontes recebe bytes UTF-8 de famílias e o estilo 0 regular, 1 bold, 2 italic ou 3 boldItalic, e retorna uma tabela completa de leitura hpdf_io_v1 para o programa real da fonte; forneça todos os quatro programas quando dados rich usarem os quatro estilos

Dados escalares solicitam o programa regular; fontFamily tem default DejaVu Sans; callbacks fornecidos de IO de fontes e user data precisam permanecer válidos até a operação retornar; status de callbacks não nulos são sticky e propagam sem retry de fallback

Para forms.import, InputIO fornece FDF/XFDF e o destino já precisa estar carregado; OutputIO recebe o PDF candidato e ResultIO recebe JSON delimitado; forms.export usa o record V1 original e grava FDF/XFDF no OutputIO

hpdf_document_load_from_io do Windows copia a entrada completa para uma origem própria imutável antes de retornar; substituição ou append pelo chamador não pode mudar a revisão ativa carregada nem a saída posterior de form data dela

Origens próprias usam um handle separado sincronizado para leituras aleatórias em segundo plano, de modo que prefetch não possa mover o cursor sequencial de publicação; o documento candidato libera os readers de segundo plano dele antes de a origem dele ser destruída

O contexto ativo muda somente depois que ambos os callbacks de saída e resultado tiverem sucesso e o checkpoint final de cancelamento passar; falha ou cancelamento de callbacks descarta o candidato e retém o documento anterior e a origem própria

Um callback pode ter recebido bytes candidatos antes de um callback posterior falhar; os chamadores devem commitar o próprio destino de saída deles somente depois que a função execute retornar HPDF_STATUS_OK

Os layouts originais dos records V1 e os símbolos exportados permanecem inalterados; esta extensão do Windows é separada da extensão publicada de callbacks do Linux nativo

Os entry points vinculados são o processador de file jobs e hpdf_document_execute_json_v1; o record legado de callbacks HPDFDocRunJob e o ExecuteLoadedOperation genérico não adquirem extensão de fontes nesta etapa; chamadores Pascal podem usar a classe explícita de transações

Campos, rich text e políticas

Valores suportados incluem nomes de textos Unicode aninhados, nomes de export de checkboxes e radios, arrays multiselect e valores read-only inalterados; /V, /RV e recursos AP genuínos são salvos juntos; campos desconhecidos e constraints obrigatórias de campos fazem a transação falhar

O interchange rich usa o perfil delimitado documentado de XHTML/CSS e fontes reais fornecidas de estilos; ele não alega suporte a HTML arbitrário, todo CSS nem XML rich irrestrito

Atualizações assinadas AES R5/R6 retêm o prefixo original completo, parameters de criptografia, identificador permanente de criptografia e assinatura CMS existente; imports escalares ou rich inalterados são byte-idênticos à revisão corrente commitada

Integridade CMS existente e binding ESS de signers são autenticados antes de atualizações assinadas de formulários; preenchimento P2/P3 é permitido apenas dentro das constraints reais dele; P1, locks FieldMDP e campos read-only alterados recusam a publicação

signaturePolicy aceita Booleanos requireCAdES, requireTimestamp, requireAdobeRevocationInfo e requireTimestampRevocation; trustedCAFile, timestampCAFile, timestampCRLFile e revocationCAFile precisam ser strings sem NUL e selecionam confiança explícita do chamador para as checagens solicitadas

Opções de callbacks C também delimitam evidências assinadas através de maxEvidenceBytes e maxEvidenceObjects; a validação de confiança é distinta da checagem default de integridade de assinaturas

formData pode reduzir maxBytes, maxFields, maxObjects, maxDepth, maxValues, maxValueCodeUnits e maxTotalCodeUnits; esses inteiros positivos exatos são adicionalmente limitados pela capacidade de trabalho; os orçamentos objectCount e pageCount limitam documentos candidatos

budget.timeMilliseconds define o deadline da operação; callbacks C do Windows também aceitam elapsedMilliseconds como um bound adicional mais justo; o cancelamento é polled durante a preparação do grafo atual, decodificação de formulários, leitura de fontes, checagens CMS, carregamento do candidato e publicação

As capabilities reportam formatos, estilos, entrada imutável e comportamento transacional reais de callbacks; a troca mapeada de anotações XFDF é implementada separadamente, enquanto arquivos FDF embutidos, actions mais amplas e documentos FDF incrementais permanecem inacabados

Tópicos relacionados

Preenchimento misto escalar e typed rich original usa o mesmo ciclo de vida autenticado de candidatos do Windows através de file jobs e execute-json-v1

Classe Transaction, Preparação do grafo atual, Form data nativo

Folhas de estilo internas aplicam selectors delimitados, importance, especificidade e ordem de origem a valores rich realmente importados e aparências salvas; imports equivalentes repetidos e publicação com falha retêm as garantias transacionais existentes

richTextResources fornece CSS vinculado e importado para file jobs reais do Windows e imports execute-json-v1, usando a transação e os bindings existentes de fontes