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