Automatic XFA native graphics and images
Unit: HPDFXFAHeadless
HPDFXFAWriteHeadlessPDF konzumuje draw callbacky obdélníků, čar, oblouků i vložených obrázků přímo z XDP, vedle stávajících konzumentů textu a widgetů
Každý draw vytvoří nativní Form XObject umístěný na skutečné layout stránce; image draw obsahují reálné Image XObject a při potřebě alpha soft masky
Vektorové cesty
Obdélníky použijí nativní PDF obdélníkové cesty, čáry zachovají lomítkový či zpětně lomítkový slope a eliptické oblouky použijí kubické segmenty nejvýše po 90 stupních
První efektivní edge dodá RGB barvu tahu i tloušťku, tedy i šířky pod bod; meze appearance tahu zahrnují polovinu tloušťky, takže form neořízne vlastní ohraničení
Oblouky konzumují startAngle a znaménkový sweepAngle, s defaultní plnou otáčkou a maximálním absolutním sweep 360 stupňů
Draw hinty rotace, scale i posunu se aplikují jednou v konečném afinním umístění kolem středu draw, s pozitivní rotací proti směru hodinových ručiček; souřadnice XFA vlevo nahoře se konvertují jednou na nativní PDF počátek
PNG a JPEG
| Formát | Skutečná nativní konzumace |
|---|---|
| PNG grayscale | Vzorky 1, 2, 4, 8 i 16 bitů, přičemž zabalené vzorky se rozbalí na 8 bitů a 16bitová přesnost se zachová |
| PNG RGB | Barevné vzorky 8 i 16 bitů |
| PNG indexed color | Indexy 1, 2, 4 a 8 bitů rozbalené přes paletu do vzorků RGB |
| PNG transparency | Průhledné vzorky grayscale a RGB, alpha palety i grayscale-alpha a RGBA 8 či 16 bitů; skutečné streamy /SMask zachovají přesnost alpha |
| PNG filtering a interlace | Všech pět PNG řádkových filtrů i průchodů Adam7, validovaných přes sdílené nativní implementace zlib a prediktorů |
| JPEG | Baseline i progresivní grayscale, RGB a CMYK snímky po 8 bitech, validované sdíleným nativním JPEG dekodérem, dřív než se zachová původní stream /DCTDecode |
Kontrolní součty chunků PNG, jejich pořadí, rozměry, indexy palet, rozsahy průhledných vzorků i přesná dekomprimovaná délka se zkontrolují, dřív než se kandidát zapíše; useknutá či nadměrná komprimovaná data přípravu zhatí
Rozměry JPEG snímku se musí shodovat se skutečným nativním dekódováním a inverze Adobe CMYK se explicitně deklaruje ve slovníku obrázku
JPEG vyžaduje stávající nativní runtime TurboJPEG; HOTPDF_TURBOJPEG_LIBRARY umí určit absolutní cestu knihovny, se závislými knihovnami hledanými operačním systémem
Poměr stran obrázku podporuje fit, none, width, height a actual; hustota PNG pHYs i JPEG JFIF určí fyzickou velikost pixelu, s použitím 96 dpi, když použitelná hustota chybí
Škálované obrázky se centerují a ořezávají na draw obdélník XFA; skládání alpha zůstává operací nativní PDF čtečky
Meze a transakce
Kódované bajty obrázků, dekódované pracovní buffery i surové image či alpha streamy jsou ohraničené, dřív než alokace; nativní limity objektů i agregátní limity image a font streamů zůstávají aktivní
Zrušení se kontroluje při parsování chunků, nafukování dat, dekódování řádků i umísťování nativních objektů; stávající nativní JPEG dekodér dostane token volajícího
Selhání přípravy zachovají pozici, délku i bajty cíle; finální WriteBuffer do cíle se řídí vlastní I/O sémantikou streamu volajícího
Aktuální hranice
Vyplněné tvary, styling rohů, ohraničení specifická po hranách, dash patterny, čárové kódy, externí transport obrázků, widgety imageEdit, další formáty obrázků, vložené barevné profily i orientace Exif pořád vyžadují dodatečnou integraci konzumentů
Animovaný PNG se konzumuje jako jeho výchozí statický obrázek; cizí XML exData zůstává samostatnou funkcí a tenhle draw adaptér nespouští libovolné vložené objekty
Akceptace
Tests/Linux/Build-XFAHeadlessGraphicFixtures.py vytvoří deterministické fixtury řádkových filtrů, Adam7, přesnosti vzorků, transparentnosti, fyzického poměru, JPEG i poškozeného protokolu
Tests/Linux/XFAHeadlessGraphicsTests.pas zapíše a znovu otevře skutečná nativní PDF a verifikuje zachování volajícího při selháních; Verify-XFAHeadlessGraphics.py nezávisle zkontroluje dekódované vzorky obrázků, přesnost /SMask, vektorové operátory, umístění i renderované pixely přes pypdf a MuPDF
Automatická nativní tvorba XFA PDF popisuje stávající konzumenty polí a textu i veřejné API voleb a výsledku