Automatic XFA native graphics and images
Unit: HPDFXFAHeadless
HPDFXFAWriteHeadlessPDF konsumuje callbacki draw prostokąta, linii, łuku i inline obrazów bezpośrednio z XDP, obok istniejących konsumentów tekstu i widgetów
Każdy draw daje natywnego Form XObjecta umieszczonego na rzeczywistej stronie layoutu; drawy obrazów zawierają rzeczywiste XObjecty obrazów i miękkie maski alfa w miarę potrzeby
Vector paths
Prostokąty używają natywnych ścieżek prostokątów PDF, linie zachowują nachylenie slash albo backslash, a łuki eliptyczne używają segmentów sześciennych co najwyżej 90 stopni
Pierwsza efektywna edge dostarcza kolor stroke RGB i grubość, łącznie z szerokościami subpoint; granice wyglądu stroke zawierają połowę grubości, więc forma nie przycina własnego obramowania
Łuki konsumują startAngle i ze znakiem sweepAngle, z domyślnym pełnym obrotem i maksymalnym absolutnym sweep 360 stopni
Rotacja, skala i translacje draw są stosowane raz w skończonym afinicznym umiejscowieniu wokół środka drawa, z rotacją dodatnią przeciwnie do wskazówek zegara; współrzędne XFA lewy-górny są konwertowane raz na natywny początek PDF
PNG and JPEG
| Format | Rzeczywista natywna konsumpcja |
|---|---|
| PNG grayscale | Próbki 1, 2, 4, 8 i 16-bit, z upakowanymi próbkami rozwiniętymi do 8 bitów i zachowaną precyzją 16-bit |
| PNG RGB | Próbki kolorów 8 i 16-bit |
| PNG indexed color | Indeksy 1, 2, 4 i 8-bit rozwinięte przez paletę do próbek RGB |
| PNG transparency | Próbki transparentne grayscale i RGB, alfa palety oraz 8- albo 16-bit grayscale-alpha i RGBA; rzeczywiste strumienie /SMask zachowują precyzję alfa |
| PNG filtering and interlace | Wszystkie pięć filtrów rzędów PNG i przebiegi Adam7, walidowane przez współdzielone natywne implementacje zlib i predykatorów |
| JPEG | Ramki grayscale, RGB i CMYK 8-bit baseline i progressive, walidowane współdzielonym natywnym dekoderem JPEG przed zachowaniem oryginalnego strumienia /DCTDecode |
Sumy kontrolne, kolejność, wymiary, indeksy palety, zakresy próbek transparentnych i dokładna długość zdekompresowana PNG są sprawdzane przed commitem kandydata; obcięte albo nadmiarowe dane skompresowane zawodzą przygotowanie
Wymiary ramek JPEG muszą zgadzać się z rzeczywistym natywnym dekodowaniem, a inwersja CMYK Adobe jest jawnie deklarowana w słowniku obrazu
JPEG wymaga istniejącego natywnego runtime TurboJPEG; HOTPDF_TURBOJPEG_LIBRARY może identyfikować absolutną ścieżkę biblioteki, z zależnymi bibliotekami odkrywanymi przez system operacyjny
Współczynnik kształtu obrazu wspiera fit, none, width, height i actual; PNG pHYs i gęstość JFIF JPEG określają fizyczny rozmiar piksela, przy 96 dpi, gdy brak użytecznej gęstości
Przeskalowane obrazy są wyśrodkowane i przycinane do prostokąta draw XFA; kompozycja alfa pozostaje operacją natywnego czytnika PDF
Bounds and transaction
Zakodowane bajty obrazów, zdekodowane bufory robocze i surowe strumienie obrazów albo alfa są ograniczone przed alokacją; natywne limity obiektów i zagregowane limity strumieni obrazów i fontów pozostają aktywne
Anulowanie jest sprawdzane podczas parsowania chunków, nadmuchiawania danych, dekodowania rzędów i umieszczania obiektów natywnych; istniejący natywny dekoder JPEG dostaje token wywołującego
Awarie przygotowania zachowują pozycję, długość i bajty celu; finalny WriteBuffer celu podąża za własną semantyką I/O strumienia wywołującego
Current boundaries
Kształty wypełnione, stylizacja corner, obramowania per-edge, wzory dash, kody kreskowe, transport obrazów zewnętrznych, widgety imageEdit, alternatywne formaty obrazów, osadzone profile kolorów i orientacja Exif nadal wymagają dodatkowej integracji konsumentów
Animowany PNG jest konsumowany jako swój defaultowy statyczny obraz; obcy XML exData pozostaje odrębną funkcją, a ten adapter drawów nie wykonuje dowolnych osadzonych obiektów
Acceptance
Tests/Linux/Build-XFAHeadlessGraphicFixtures.py produkuje deterministyczne fixture'y filtrów rzędów, Adam7, precyzji próbek, transparentności, fizycznego współczynnika, JPEG i wadliwego protokołu
Tests/Linux/XFAHeadlessGraphicsTests.pas zapisuje i ponownie otwiera rzeczywiste natywne PDF-y i weryfikuje zachowanie wywołującego przy awariach; Verify-XFAHeadlessGraphics.py niezależnie sprawdza zdekodowane próbki obrazów, precyzję /SMask, operatory wektorowe, umiejscowienie i wyrenderowane piksele pypdf i MuPDF
Automatyczne natywne tworzenie PDF XFA opisuje istniejących konsumentów pól i tekstu oraz publiczne API opcji i wyników