Automatic XFA native PDF creation
Unit: HPDFXFAHeadless
HPDFXFAWriteHeadlessPDF vytvoří čerstvé nativní PDF přímo z XDP bajtů a aplikací dodaného TrueType písma, bez vstupního PDF či připravených slotů polí
Adaptér konzumuje stávající callbacky XFA bindingů, opakovaných instancí i stránkovacího layoutu a staví nativní grafové objekty stránek i AcroForm se skutečnými appearance streamy s vloženými písmy
Konzumují se textová, číselná, datumová i password pole, push buttony, combo i list volby, skupiny checkboxů a radio, statický text a draw obdélníků, čar, oblouků i inline PNG či JPEG obrázků; podpisy i další draw konzumenti vyžadují další integraci adaptéru
Tvorba voleb a boolean zachovává oddělené display i exportní hodnoty, chování editable a multi-select, nativní appearance stavy i nezávislé opakované radio skupiny
Boolean styly a caption konzumují skutečné vektorové značky, velikost, barvy obrysů a tloušťky, regiony Unicode caption i třetí stav checkboxů
Nativní grafika a obrázky konzumují skutečné vektorové cesty, PNG formáty vzorků a transparentnost, baseline či progresivní JPEG, fyzický poměr stran i afinní umístění
Hesla používají maskovanou appearance, zatímco nativní hodnota pole zůstává; dokumentové Editable i efektivní přístup XFA readOnly určují nativní příznaky polí
Souřadnice bodů XFA používají počátek vlevo nahoře a konvertují se jednou na nativní obdélníky widgetů i draw posuny; samostatné opakované výskyty dostanou od layout engine odlišné nativní názvy polí
Nativní resource /AP, /DR a /DA se generují s dodaným písmem a efektivní velikostí, barvou i zarovnáním; dodaný řez se použije pro každé pole, takže výběr typeface i vícenásobné style řezy zůstávají v této fázi odpovědností aplikace
K provedení lifecycle či interakčních událostí a uložení výsledného XDP před tvorbou použijte TXFAWidgetRuntime, když je dokument ty události vyžaduje; ScriptOptions adaptéru řídí zpracování calculate i validate flatten engine
Příprava a limity
TXFAHeadlessPDFOptions ohraničuje bajty XDP i písem, bajty výstupu i objektů, počty objektů a stránek, pole i agregátní glyph unit UTF-16
Rozpočty objektů, stránek i glyfů se kontrolují dřív, než dojde k odpovídajícím alokacím; embedding kontroly ohraničují agregátní font i image streamy, image dekodéry ohraničují své pracovní buffery a nativní serializace vynucuje limity objektů i kompletního kandidáta v bajtech
Zrušení se kontroluje po celou tvorbu grafu, generování appearance i serializaci; všechna selhání přípravy nechají pozici, délku i stávající bajty cílového streamu beze změny
Kompletní kandidát se připraví v paměti, dřív než jediné volání WriteBuffer do cíle; chyby I/O cíle se propagují a podle chování streamu volajícího mohou zanechat částečné zápisy
Výstup je nový nepodepsaný dokument; zachování importovaného šifrování, stávajících podpisů i zdrojových revizí patří nativním API importu dokumentů a revizí
Akceptace
Tests/Linux/XFAHeadlessCreationTests.pas vytvoří skutečné opakované, stránkované i globálně read-only dokumenty, dokument s uloženým XDP mutovaným událostí i dokument se stylovaným Unicode draw, aniž by otevřela UI čtečky
Tests/Linux/Verify-XFAHeadlessCreation.py nezávisle verifikuje nativní hodnoty, příznaky polí, vlastnictví stránek, resource /AP i vložená písma přes pypdf a skutečný text i renderované pixely appearance přes MuPDF
Tests/Linux/XFAHeadlessChoiceTests.pas a Verify-XFAHeadlessChoice.py přidávají skutečné choice hodnoty a příznaky, radio rodiče i identity opakovaných scopů, rezervované exportní stavy, runtime uložení/reload a rollback i renderované pixely výběru
TXFAHeadlessPDFResult reportuje skutečné nativní grafové i serializační počty