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

FormatRzeczywista natywna konsumpcja
PNG grayscalePróbki 1, 2, 4, 8 i 16-bit, z upakowanymi próbkami rozwiniętymi do 8 bitów i zachowaną precyzją 16-bit
PNG RGBPróbki kolorów 8 i 16-bit
PNG indexed colorIndeksy 1, 2, 4 i 8-bit rozwinięte przez paletę do próbek RGB
PNG transparencyPró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 interlaceWszystkie pięć filtrów rzędów PNG i przebiegi Adam7, walidowane przez współdzielone natywne implementacje zlib i predykatorów
JPEGRamki 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