|
THotPDF.AddXFAPacket / ClearXFAPackets / XFAPacketCount THotPDF XFA forms container (v2.119.51)
|
RegisterAcroFormFont AcroForm Support |
|
Регистрира именуван XFA (XML Forms Architecture) packet за излъчване в AcroForm /XFA entry на документа. PDF 1.7 §12.7.6 + §12.7.8 позволява на AcroForm да носи /XFA array заедно с (или вместо) статичния /Fields array, което позволява hybrid AcroForm + XFA workflows или чисти динамични XFA форми
Delphi syntax: procedure AddXFAPacket(const PacketName: AnsiString; const XMLBytes: TBytes); procedure ClearXFAPackets; function XFAPacketCount: Integer;
Описание Всяко извикване на
При EndDoc всеки регистриран пакет се превръща в един индиректен FlateDecode-компресиран stream object, а масивът AcroForm /XFA редува имената на пакетите (PDF strings) и stream референциите в реда на регистрация, така че оформянето остава детерминистично. ClearXFAPackets премахва всички регистрирани пакети, полезно при повторна употреба на един THotPDF обект през няколко документа. XFAPacketCount връща текущия брой
Container-level support only HotPDF не парсира XFA XML, не имплементира XFA dynamic-layout engine, не изпълнява FormCalc или JavaScript вътре в XFA шаблона и не валидира структурата на шаблона. Извикващият сам създава XFA XML (обикновено чрез Adobe LiveCycle Designer или ръчно по спецификацията XFA 3.3), а HotPDF излъчва байтовете дословно
Consumer readers с XFA engine (по-стар Acrobat / Reader, FormsCentral, някои kiosk products) рендират формата; readers без XFA engine (Adobe Reader DC от 2017 нататък, повечето open-source readers) показват fallback AcroForm полетата, ако документът е hybrid AcroForm + XFA workflow
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 изрично забраняват XFA forms (dynamic-layout engine-ът не може да се архивира детерминирано). ISO 15930 prepress workflow-ите изцяло отхвърлят интерактивни форми. AddXFAPacket вдига изключение незабавно при всяка ненулева PDFACompliance или PDFXCompliance със съответната spec препратка. Дублирани имена на packet-и вдигат изключение. Празен PacketName или празен XMLBytes вдигат изключение. RequirePDFVersion(pdf15) автоматично повишава версията на документа
AcroForm dictionary emission Диктът AcroForm се издава, когато either
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 Масивът
XFA-to-AcroForm flattening ApplyXFAAsAcroForm преобразува подаваните от извикващия XDP/XFA bytes към текущата страница като native AcroForm widgets и прости page graphics. FlattenLoadedXFA прави същото преобразуване за заредено PDF, което вече съдържа вграден /XFA пакет. Задайте Editable=False, за да маркирате генерираните widgets като само за четене, и проверете XFAFlattenWarnings за елементи, които не могат да бъдат картографирани
See also: AcroForm Support, THotPDF.RegisterAcroFormFont, THPDFPage.AddTextField |