|
THotPDF.AddXFAPacket / ClearXFAPackets / XFAPacketCount THotPDF XFA forms container (v2.119.51)
|
RegisterAcroFormFont AcroForm Support |
|
Registra um pacote XFA (XML Forms Architecture) nomeado para emissão dentro da entrada /XFA do AcroForm do documento. PDF 1.7 §12.7.6 + §12.7.8 permite que um AcroForm carregue uma matriz /XFA junto da matriz /Fields estática (ou em vez dela), habilitando fluxos híbridos AcroForm + XFA ou formulários XFA dinâmicos puros
Delphi syntax: procedure AddXFAPacket(const PacketName: AnsiString; const XMLBytes: TBytes); procedure ClearXFAPackets; function XFAPacketCount: Integer;
Descrição Cada chamada a AddXFAPacket registra um pacote nomeado. Nomes típicos (conforme a especificação XFA 3.3 e PDF 1.7 §12.7.8 Table 234):
Em EndDoc, cada pacote registrado se torna um objeto de fluxo indireto compactado com FlateDecode, e a matriz AcroForm /XFA alterna strings PDF de nome de pacote com referências de fluxo na ordem de registro, mantendo um layout determinístico em bytes. ClearXFAPackets remove todos os pacotes registrados (útil para reutilizar uma instância THotPDF em vários documentos). XFAPacketCount retorna a contagem atual
Container-level support only O HotPDF não analisa o XML XFA, não implementa o mecanismo de layout dinâmico XFA, não executa FormCalc nem JavaScript dentro do template XFA e não valida a estrutura do template. O chamador cria o XML XFA por conta própria (normalmente via Adobe LiveCycle Designer ou manualmente contra a especificação XFA 3.3), e o HotPDF emite os bytes sem alteração
Leitores consumidores com mecanismo XFA (Acrobat / Reader antigos, FormsCentral, alguns produtos de quiosque) renderizam o formulário; leitores sem mecanismo XFA (Adobe Reader DC de 2017 em diante, a maioria dos leitores de código aberto) exibem os campos AcroForm de fallback se o documento usa um fluxo híbrido AcroForm + XFA
PDF/A and PDF/X compliance gates ISO 19005-1 §6.4.2 / ISO 19005-2 §6.4.2 / ISO 19005-3 §6.4.2 proíbem explicitamente formulários XFA (o mecanismo de layout dinâmico não é arquivável de forma determinística). Fluxos de pré-impressão ISO 15930 rejeitam formulários interativos por completo. AddXFAPacket levanta exceção imediatamente sob qualquer PDFACompliance ou PDFXCompliance não vazio com a referência de especificação relevante. Nomes de pacote duplicados levantam exceção. PacketName vazio ou XMLBytes vazio levantam exceção. RequirePDFVersion(pdf15) eleva automaticamente a versão do documento
AcroForm dictionary emission O dicionário AcroForm é emitido quando /Fields tem pelo menos uma entrada ou quando pelo menos um pacote XFA foi registrado. Chamadores anteriores à v2.119.51 que não registram pacotes mantêm saída /AcroForm byte a byte idêntica
Typical workflow (pure XFA dynamic form)
PDF.BeginDoc; TemplateBytes := TFile.ReadAllBytes('form-template.xml'); DataBytes := TFile.ReadAllBytes('form-data.xml'); PDF.AddXFAPacket('xdp:xdp', BytesOf('<xdp:xdp xmlns:xdp="http://ns.adobe.com/xdp/">')); PDF.AddXFAPacket('template', TemplateBytes); PDF.AddXFAPacket('datasets', DataBytes); PDF.AddXFASignaturePacket(SigBytes); { caller-generated XAdES } PDF.AddXFAPacket('/xdp:xdp', BytesOf('</xdp:xdp>')); PDF.EndDoc;
XDP wrapper, single-stream, dynamic, and signed XFA A forma de array de
Achatamento de XFA para AcroForm
Consulte também: AcroForm Support, THotPDF.RegisterAcroFormFont, THPDFPage.AddTextField |