Automatische native XFA-Grafiken und Bilder
Unit: HPDFXFAHeadless
HPDFXFAWriteHeadlessPDF konsumiert Rectangle-, Line-, Arc- und Inline-Image-Draw-Callbacks direkt aus dem XDP, neben den bestehenden Text- und Widget-Consumern
Jeder Draw erzeugt ein natives Form XObject, das auf der tatsächlichen Layoutseite platziert wird; Image-Draws enthalten echte Image XObjects und bei Bedarf Alpha-Softmasks
Vektorpfade
Rechtecke nutzen native PDF-Rechteckpfade, Linien bewahren Slash- oder Backslash-Steigung, und elliptische Bögen nutzen kubische Segmente von höchstens 90 Grad
Die erste effektive edge liefert RGB-Stroke-Farbe und -Dicke, einschließlich Subpunkt-Breiten; die Stroke-Appearance-Bounds schließen die halbe Dicke ein, damit das Form nicht seinen eigenen Rahmen beschneidet
Bögen konsumieren startAngle und vorzeichenbehaftetes sweepAngle, mit Default-Vollumdrehung und einem maximalen absoluten Sweep von 360 Grad
Draw-Rotations-, Skalierungs- und Translations-Hinweise werden einmal in einer endlichen affinen Platzierung um den Draw-Mittelpunkt angewendet, mit positiver Drehung gegen den Uhrzeigersinn; XFA-Koordinaten oben links werden einmal auf den nativen PDF-Ursprung umgerechnet
PNG und JPEG
| Format | Tatsächlicher nativer Verbrauch |
|---|---|
| PNG-Graustufen | 1-, 2-, 4-, 8- und 16-Bit-Samples, gepackte Samples werden auf 8 Bits erweitert und 16-Bit-Präzision bleibt erhalten |
| PNG RGB | 8- und 16-Bit-Farbsamples |
| PNG-Indexfarben | 1-, 2-, 4- und 8-Bit-Indizes, über die Palette zu RGB-Samples erweitert |
| PNG-Transparenz | Transparente Graustufen- und RGB-Samples, Paletten-Alpha sowie 8- oder 16-Bit-Graustufen-Alpha und RGBA; echte /SMask-Streams bewahren die Alpha-Präzision |
| PNG-Filterung und Interlace | Alle fünf PNG-Zeilenfilter und Adam7-Durchgänge, validiert über die gemeinsamen nativen zlib- und Predictor-Implementierungen |
| JPEG | 8-Bit-Baseline- und Progressive-Graustufen-, RGB- und CMYK-Frames, validiert mit dem gemeinsamen nativen JPEG-Decoder, bevor der originale /DCTDecode-Stream bewahrt wird |
PNG-Chunk-Checksums, Reihenfolge, Dimensionen, Palettenindizes, transparente Sample-Bereiche und exakte dekomprimierte Länge werden geprüft, bevor ein Kandidat committet wird; abgeschnittene oder überschüssige komprimierte Daten lassen die Vorbereitung fehlschlagen
JPEG-Frame-Dimensionen müssen mit dem echten nativen Decoding übereinstimmen, und die Adobe-CMYK-Inversion wird explizit im Image-Dictionary deklariert
JPEG erfordert die bestehende native TurboJPEG-Runtime; HOTPDF_TURBOJPEG_LIBRARY kann einen absoluten Bibliothekspfad angeben, abhängige Bibliotheken findet das Betriebssystem
Bild-Aspect unterstützt fit, none, width, height und actual; PNG-pHYs und JPEG-JFIF-Dichte bestimmen die physische Pixelgröße, bei fehlender nutzbarer Dichte gelten 96 dpi
Skalierte Bilder werden zentriert und auf das XFA-Draw-Rechteck beschnitten; Alpha-Compositing bleibt eine Operation des nativen PDF-Readers
Grenzen und Transaktion
Kodierte Bildbytes, decodierte Arbeitspuffer und rohe Bild- oder Alpha-Streams werden vor der Allokation begrenzt; native Objektgrenzen sowie aggregierte Bild- und Schriftstream-Grenzen bleiben aktiv
Abbruch wird beim Parsen von Chunks, Inflaten von Daten, Decodieren von Zeilen und Platzieren nativer Objekte geprüft; der bestehende native JPEG-Decoder erhält das Token des Aufrufers
Vorbereitungsfehler bewahren Zielposition, -länge und -bytes; das finale WriteBuffer aufs Ziel folgt den eigenen I/O-Semantiken des Aufrufer-Streams
Aktuelle Grenzen
Gefüllte Shapes, Corner-Styling, edge-spezifische Rahmen, Dash-Muster, Barcodes, externer Bildtransport, imageEdit-Widgets, alternative Bildformate, eingebettete Farbprofile und Exif-Orientierung erfordern weiterhin zusätzliche Consumer-Integration
Animiertes PNG wird als sein standardmäßiges Stillbild konsumiert; Fremd-XML-exData bleibt ein separates Feature, und dieser Draw-Adapter führt keine beliebigen eingebetteten Objekte aus
Abnahme
Tests/Linux/Build-XFAHeadlessGraphicFixtures.py erzeugt deterministische Zeilenfilter-, Adam7-, Sample-Präzisions-, Transparenz-, physische Aspekt-, JPEG- und fehlerhafte Protokoll-Fixtures
Tests/Linux/XFAHeadlessGraphicsTests.pas schreibt und öffnet echte native PDFs erneut und verifiziert die Bewahrung durch den Aufrufer bei Fehlern; Verify-XFAHeadlessGraphics.py prüft unabhängig decodierte Bildsamples, /SMask-Präzision, Vektoroperatoren, Platzierung und gerenderte Pixel mit pypdf und MuPDF
Automatische native XFA-PDF-Erzeugung beschreibt die bestehenden Feld- und Text-Consumer sowie die öffentlichen Options- und Ergebnis-APIs