Troca FDF/XFDF em Windows

Trabalhos de ficheiros de 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

Trabalhos de ficheiros

{
  "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 palavra-passe opcional; não exige formDataInput nem fonts; trabalhos de ficheiros reservam um candidato exclusivo ao lado do alvo, fazem flush e fecham-no, validam o JSON delimitado de resultados e depois substituem o alvo atomicamente

Tipos de letra em falta, entrada malformada, falhas de autenticação ou de políticas, limites esgotados e publicação falhada preservam o alvo completo existente; a saída não pode ser alias da entrada PDF nem da de dados de formulários, incluindo um hard link

Famílias nomeadas de tipos de letra

forms.import aceita fontFamilies na raiz da operação como um array de uma a dezasseis etiquetas; a ausência mantém o perfil original de família única e a etiqueta fontFamily de callbacks

"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 trabalhos de ficheiros, fonts contém objetos chaveados pelas etiquetas configuradas exatas; sem fontFamilies mantém o objeto original direto de caminhos de estilos; leia apenas programas reais de famílias/estilos, com todos os bytes selecionados de tipos de letra a partilharem o orçamento da operação

Para callbacks V1 de Windows, o callback existente de tipos de letra recebe cada etiqueta canónica UTF-8 configurada real e o estilo selecionado; duas famílias usando todos os quatro estilos fazem oito pedidos reais de programas sem alterar o registo de callbacks

Letras ASCII de etiquetas comparam-se sem maiúsculas e minúsculas enquanto os restantes carateres Unicode comparam-se exatamente; as etiquetas são distintas, não vazias e de no máximo 128 unidades de código UTF-16, sem whitespace envolvente, controlos, surrogates emparelhados a incompleto nem pontuação CSS de aspas/separadores

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

fallbackFontFamilies=true opt-in preserva candidatos ordered inline CSS de famílias e carrega programas reais configurados de faces/estilos para fallback de graphemes completos; veja o fallback rich de tipos de letra de famílias fornecidas em Windows para candidatos tipados, carregamento por callbacks e o âmbito apenas 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 o tipo original dele de arrays de objetos 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 tipado-rich original usa o binding separado original-typed-runs-v1 descrito abaixo; a extensão mais antiga de callbacks de tipos de letra de trabalhos continua a ser trabalho subsequente separado

Callbacks versionados C de Windows

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

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

Dados escalares pedem o programa regular; fontFamily tem por defeito DejaVu Sans; callbacks fornecidos de IO de tipos de letra e dados de utilizadores têm de permanecer válidos até a operação devolver; status de callbacks diferentes de zero são persistentes e propagam-se sem repetição de fallback

Para forms.import, InputIO fornece FDF/XFDF e o destino tem de já estar carregado; OutputIO recebe o PDF candidato e ResultIO recebe JSON delimitado; forms.export usa o registo V1 original e escreve FDF/XFDF em OutputIO

hpdf_document_load_from_io de Windows copia a entrada completa para uma fonte própria imutável antes de devolver; substituição ou acrescento por quem chama não pode alterar a revisão ativa carregada nem a saída posterior de dados de formulários dela

Fontes próprias usam um handle separado sincronizado para leituras aleatórias em segundo plano, pelo que o prefetch não pode mover o cursor sequencial de publicações; o documento candidato liberta os leitores em segundo plano dele antes de a fonte dele ser destruída

O contexto ativo só muda depois de ambos os callbacks de saída e de resultados terem sucesso e o checkpoint final de cancelamento passar; falha de callbacks ou cancelamento descarta o candidato e retém o documento anterior e a fonte própria dele

Um callback pode ter recebido bytes candidatos antes de um callback posterior falhar; quem chama tem de confirmar o destino próprio de saída dele apenas depois da função execute devolver HPDF_STATUS_OK

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

Os pontos de entrada vinculados são o processador de trabalhos de ficheiros e hpdf_document_execute_json_v1; o registo mais antigo de callbacks HPDFDocRunJob e o ExecuteLoadedOperation genérico não adquirem uma extensão de tipos de letra neste estádio; quem chama a partir de Pascal pode usar a classe de transação explícita

Campos, rich text e políticas

Valores suportados incluem nomes aninhados de texto Unicode, nomes de exportação de checkboxes e radios, arrays de multiseleção e valores só de leitura inalterados; /V, /RV e recursos AP genuínos são guardados em conjunto; campos desconhecidos e restrições obrigatórias de campos fazem falhar a transação

O intercâmbio rich usa o perfil delimitado documentado de XHTML/CSS e tipos de letra reais fornecidos de estilos; não reivindica suporte de HTML arbitrário, de todo o CSS nem de XML rich sem restrições

Atualizações assinadas AES R5/R6 retêm o prefixo original completo, os parâmetros de encriptação, o identificador permanente de encriptação e a assinatura CMS existente; importações escalares ou rich inalteradas são byte-idênticas à revisão atual confirmada

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 restrições reais dele; P1, bloqueios FieldMDP e campos só de leitura alterados recusam a publicação

signaturePolicy aceita requireCAdES, requireTimestamp, requireAdobeRevocationInfo e requireTimestampRevocation Booleanos; trustedCAFile, timestampCAFile, timestampCRLFile e revocationCAFile têm de ser strings sem NUL e selecionam confiança explícita de quem chama para as verificações pedidas

Opções de callbacks C também delimitam evidência assinada através de maxEvidenceBytes e maxEvidenceObjects; a validação de confiança é distinta da verificação por defeito de integridade de assinaturas

formData pode baixar maxBytes, maxFields, maxObjects, maxDepth, maxValues, maxValueCodeUnits e maxTotalCodeUnits; estes inteiros positivos exatos são adicionalmente limitados pela capacidade de trabalho; budget objectCount e pageCount limitam documentos candidatos

budget.timeMilliseconds define o prazo da operação; callbacks C de Windows também aceitam elapsedMilliseconds como um bound adicional mais apertado; o cancelamento é consultado durante a preparação do grafo atual, descodificação de formulários, leitura de tipos de letra, verificações CMS, carregamento de candidatos e publicação

As capacidades reportam formatos, estilos, entrada imutável e comportamento transacional de callbacks reais; a troca mapeada de anotações XFDF é implementada separadamente, enquanto ficheiros FDF incorporados, ações mais abrangentes e documentos FDF incrementais permanecem inacabados

Tópicos relacionados

O preenchimento misto escalar e tipado-rich original usa o mesmo ciclo de vida autenticado de candidatos de Windows através de trabalhos de ficheiros e execute-json-v1

Classe de transação, Preparação do grafo atual, Dados nativos de formulários

Folhas de estilo internas aplicam seletores delimitados, importância, especificidade e ordem de fontes a valores rich realmente importados e a aparências guardadas; importações equivalentes repetidas e publicação falhada mantêm as garantias transacionais existentes

richTextResources fornece CSS linkado e importado para file jobs reais de Windows e importações execute-json-v1, usando a transação e os bindings de tipos de letra existentes