|
THotPDF.AddXFAPacket / ClearXFAPackets / XFAPacketCount THotPDF XFA forms container (v2.119.51)
|
RegisterAcroFormFont AcroForm Support |
|
Regista um pacote XFA (XML Forms Architecture) com nome para emissão dentro da entrada AcroForm /XFA do documento. PDF 1.7 §12.7.6 + §12.7.8 permite que um AcroForm transporte uma matriz /XFA juntamente com (ou em vez de) a matriz /Fields estática, viabilizando fluxos de trabalho 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
Em EndDoc, cada pacote registado torna-se um objeto stream indireto comprimido com FlateDecode, e a matriz AcroForm /XFA alterna strings PDF com o nome do pacote e referências de stream pela ordem de registo, pelo que o layout é byte-deterministic. ClearXFAPackets remove todos os pacotes registados (útil para reutilizar uma instância THotPDF em vários documentos). XFAPacketCount devolve a contagem atual
Container-level support only O HotPDF não analisa o XML XFA, não implementa o motor 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 si próprio (normalmente através do Adobe LiveCycle Designer ou manualmente com base na especificação XFA 3.3) e o HotPDF emite os bytes verbatim
Os leitores consumidores com um motor XFA (Acrobat / Reader mais antigos, FormsCentral, alguns produtos de kiosk) renderizam o formulário; os leitores sem motor XFA (Adobe Reader DC a partir de 2017, a maioria dos leitores open-source) mostram os campos AcroForm de recurso se o documento for 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 motor de layout dinâmico não é arquivável de forma determinística). Os fluxos de prepress ISO 15930 rejeitam formulários interativos na totalidade. AddXFAPacket levanta de imediato sob qualquer PDFACompliance ou PDFXCompliance não vazio com a referência de especificação relevante. Nomes de pacote duplicados levantam. PacketName vazio ou XMLBytes vazio levantam. RequirePDFVersion(pdf15) promove automaticamente a versão do documento
AcroForm dictionary emission A matriz AcroForm é emitida quando ou
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 matriz
XFA-to-AcroForm flattening ApplyXFAAsAcroForm mapeia bytes XDP/XFA fornecidos pelo chamador para a página atual como widgets AcroForm nativos e gráficos de página simples. FlattenLoadedXFA executa a mesma conversão para um PDF carregado que já transporte um pacote /XFA incorporado. Passe Editable=False para tornar os widgets gerados só de leitura e inspecione XFAFlattenWarnings para elementos que não puderam ser mapeados
See also: AcroForm Support, THotPDF.RegisterAcroFormFont, THPDFPage.AddTextField |