Anzeigelisten und Druckproduktion

HotPDF kompiliert geladene Seitenstreams in wiederverwendbare Instanzen von THPDFPageDisplayList mit Metriken von THPDFDisplayListInfo und Begrenzungsrahmen für Inhaltsobjekte

Das Dokumentrendering cached kompilierte Listen, während Aufrufer eine unabhängig besessene Liste für wiederholte Ausführung oder regionale Objektabfragen anfordern können

Gemeinsamer Produktions-Interpreter

Nicht-progressives Bitmap, Direct-DC, Form- und Display-List-Wiedergabe geben vor-tokenisierten Inhalt alle durch HPDFInterpretContentTokensDevice, das Operator-Traversierung und Abbruchgrenzen besitzt

THPDFPageRenderer implementiert IHPDFContentOperatorDevice, sodass die gemeinsame Traversierung seine vollständige Zustandsmaschine für Grafik, Text, Ressourcen, Clipping, Patterns, Transparenz, markierte Inhalte und Bilder aufruft, ohne das Produktions-Rendering auf die kleinere semantische Callback-Oberfläche zu reduzieren

Display-Listen cachen Operator-Token-Indizes, während Streams kompiliert werden, und spielen nur diese Indizes wieder ab, was wiederholte Operand-Scans vermeidet; THPDFPageDisplayList.OperatorCount und THPDFDisplayListInfo.OperatorCount legen die zwischengespeicherte Befehlszahl offen

Semantische Devices, die nur IHPDFContentDevice implementieren, behalten kapazitätsgefilterte Callbacks, während vollständige Operator-Devices jeweils einen validierten Operator mit einem Abbruch-Checkpoint pro Operator erhalten

Begrenzte und parallele Wiedergabe

THPDFRenderTileEvent erhält jeweils eine vom Aufrufer dimensionierte Kachel oder ein horizontales Band, sodass der Spitzenbedarf an Rasterspeicher von der vollständigen Seitengröße unabhängig bleibt

RenderLoadedPagesParallel überlappt Display-List-Kompilierung mit Wiedergabe, startet die erste fertige Seite, ohne auf eine vollständige Kompilierungsbarriere zu warten, balanciert beide Stufen dynamisch über begrenzte Worker aus und liefert ein THPDFBitmapArray in Eingabereihenfolge

Die Kompilierung läuft außerhalb der Display-List-Cache-Sperre; doppelt geprüfte Aufnahme und geschützte Nutzungszähler erlauben es, unabhängige Seiten gleichzeitig zu kompilieren, ohne veröffentlichte Einträge zu duplizieren oder eine Liste während der Wiedergabe zu verdrängen

THPDFParallelRenderPipelineInfo legt Cache-Treffer, Kompilierungen, Abschlüsse, spitze Kompilier- und Render-Parallelität, beim ersten Ergebnis kompilierte Seiten, Latenz bis zum ersten Ergebnis und Gesamtlaufzeit offen

THPDFRenderTileEvent erhält jeweils eine vom Aufrufer dimensionierte Kachel oder ein horizontales Band, sodass der Spitzenbedarf an Rasterspeicher von der vollständigen Seitengröße unabhängig bleibt

Die Wiedergabe kann in deterministischer Reihenfolge arbeiten und mit Abbruch-, Zeit-, Pixel- und Speichervorgaben kooperieren

Farbseparationen, Überdruckprüfung und Ausgabediagnosen machen Druckmerkmale sichtbar, ohne das geladene Dokument zu verändern

Der prozessweite Peak-Memory-Scheduler begrenzt jetzt beide parallelen APIs: die größte Seitenschätzung reduziert die anfängliche Worker-Anzahl, jede beanspruchte Seite reserviert ihren vollständigen geschätzten Arbeitssatz, und geordnete Ausgabe behält diese Reservierung bis zur Callback-Übergabe bei

Scheduler-Abbruch weckt Budget-Wartende bei Callback-Abbruch oder Worker-Fehler, während die Telemetrie angeforderte gegenüber effektiven Workern, spitze Reservierungslast, verzögerte Seiten und Gesamtwartedauer offenlegt

RenderLoadedPageTilesParallel und RenderLoadedPageBandsParallel liefern geliehene zeilenweise Kacheln oder Bänder von oben nach unten über isolierte Worker, wobei jeder Worker höchstens eine Kachel besitzt und eine vom Aufrufer vorgegebene Arbeitsspeichergrenze die Parallelität bereits vor der ersten Beanspruchung senkt

Parallele Render-Kontexte kopieren unveränderliche Type-3-Glyph-Token-Folgen und Rasterzellen-Schwellwertmasken aus einem begrenzten LRU-Cache und behalten die Renderer-lokale Zuständigkeit für veränderlichen Grafikzustand und GDI-Ressourcen

SaveLoadedPageToPng, SaveLoadedPageToPngStream, SaveLoadedPagesToTiffBanded und SaveLoadedPagesToTiffStreamBanded nutzen denselben Band-Renderer über Streaming-PNG- oder TIFF-Encoder, sodass sehr große Seiten komprimierte Ausgabe Zeile für Zeile ausgeben, ohne einen vollständigen Framebuffer zu halten; THPDFBandImageExportInfo meldet gerenderte Bänder, kodierte Zeilen, Worker, spitze Reservierungsbytes, Ausgabebytes, Laufzeit und Abbruch

Die gemeinsame Bilddekodierung wird separat koordiniert, damit Vektorseitenarbeit parallel bleibt, ohne Einträge des Dekodier-Cache zu korrumpieren

PrefetchLoadedPages wärmt Raster-Einträge mit einem eigenen Abbruch-Token, während außerhalb der Cache-Sperre kompiliert und gerendert wird, und Seitenrendering im Vordergrund verdrängt den Worker, bevor latenzsensible Arbeit beginnt

THPDFLoadedPagePrefetchInfo meldet geplante, gestartete, abgeschlossene, gecachte, gerenderte, fehlgeschlagene, abgebrochene und im Vordergrund verdrängte Arbeiten samt letzter und maximaler Abbruchlatenz

Transparenz- und Drucksteuerung

Das Transparenz-Flattening prüft zuerst die Transparenzanzahl der Display-Liste und eine vom Aufrufer definierte Pixel-Obergrenze, ersetzt dann den Seitenauftrag durch ein verlustfreies, Flate-komprimiertes kalibriertes RGB-Bild

Seiten mit Separation- oder DeviceN-Farben bleiben Vektorinhalt, wobei erkannte Farben und Erhaltungsstatus dem Aufrufer offengelegt werden

Der Renderer führt Transferfunktionen und Rasterzellenwörterbücher der Typen 1, 5, 6, 10 oder 16 aus ExtGState aus und bewahrt dabei unabhängige RGB-Screens samt ihrer Transfer-Overrides über q und Q

THPDFInkCoverageInfo meldet die durchschnittliche CMYK-Deckung, die maximale Gesamtflächendeckung und die Anzahl der Pixel oberhalb des gewählten Schwellwerts

Die Ausgabe von Prozess- und Sonderfarb-Auszügen unterstützt DeviceCMYK-, Separation- und DeviceN-Farben

Farbumschreibung geladener Seiten nutzt denselben vollständigen Renderer, um komplexe Seiten nach Gray, RGB oder CMYK umzusetzen, einfachen gerätefarbigen Seiteninhalt als Vektoren zu behalten und eine explizite Sonderfarbauszugs-Politik anzuwenden

THPDFTrappingInfo vereint Trapping-Deklarationen des Dokuments, Seitenmetadaten und strukturelle TrapNet-Diagnostik

ICC-Workflow

Die Rendering-Transformation kann ein PDF-Quellprofil, einen Mischfarbraum, ein Proof-Profil, ein Ausgabeprofil und ein sRGB-Rasterziel kombinieren

Alle vier ICC-Rendering-Intents und echte Schwarzpunktkompensation werden durchgehend konsistent auf Vektorfarben und Bildsamples angewendet

Vollständige Transformationen werden über Vektor-, Bild-, Seiten- und parallele Renderpfade hinweg in einem thread-sicheren 64-MiB-LRU-Cache geteilt, dessen Schlüssel aus Quell-, Proof- und Ausgabeprofilinhalten, effektivem Rendering-Intent und Schwarzpunktkompensation gebildet wird

Das Transparenz-Flattening nutzt dieselbe Transformations-Pipeline wieder und gibt dann nahtlose D65-CalRGB-Kacheln unter vom Aufrufer gesteuerten Budgets für Gesamtraster und Pixel pro Kachel aus

Primäre APIs