THPDFRenderDocAccess Record
Bindet den Renderer an Dokumentdienste zum Auflösen von Referenzen, Lesen von Strömen, Dekodieren von Bildern, Auffinden von Schriften und Auswerten der Layer-Sichtbarkeit
Deklaration
THPDFRenderDocAccess= record
Context: Pointer;
SharedCache: THPDFRendererSharedCache;
ShareRenderCaches: boolean;
// v2.375.0 generic indirect-ref resolver (any object type). The typed
// Resolve* fields below predate it and return nil for non-matching
// types, which silently dropped indirect refs to arrays (e.g. a
// /ColorSpace entry pointing at a [/Separation ...] array object)
ResolveObject: function(Context: Pointer; Obj: THPDFObject): THPDFObject;
ResolveDictionary: function(Context: Pointer; Obj: THPDFObject): THPDFDictionaryObject;
ResolveStream: function(Context: Pointer; Obj: THPDFObject): THPDFStreamObject;
ReadDecodedStreamBytes: function(Context: Pointer; Stream: THPDFStreamObject; out Bytes: TBytes): boolean;
AcquireDecodedImageStream: function(Context: Pointer;
Stream: THPDFStreamObject): IHPDFDecodedBitmapHandle;
DecodeImageStream: function(Context: Pointer; Stream: THPDFStreamObject): TBitmap;
BeginProgressiveImageDecode: function(Context: Pointer;
Stream: THPDFStreamObject;
CancellationToken: THPDFCancellationToken): IHPDFProgressiveImageDecoder;
DecodeImageRegion: function(Context: Pointer; Stream: THPDFStreamObject;
RegionLeft, RegionTop, RegionRight, RegionBottom,
DesiredWidth, DesiredHeight: Integer): TBitmap;
AcquireDecodedImageRegion: function(Context: Pointer;
Stream: THPDFStreamObject; RegionLeft, RegionTop, RegionRight,
RegionBottom, DesiredWidth,
DesiredHeight: Integer): IHPDFDecodedBitmapHandle;
// v2.425.0 inline-image decoder: builds a throwaway stream from the raw
// ID..EI bytes and the normalised BI key set, then decodes it without the
// ObjectNumber-keyed cache (inline images have no object number). Returns
// a TBitmap the caller owns, or nil on failure. Nil hook = inline images
// are not rendered (legacy behaviour)
DecodeInlineImage: function(Context: Pointer; const Bytes: TBytes;
const Keys: THPDFInlineImgKeys): TBitmap;
// Colour-key /Mask array of an image XObject as a soft mask, white where
// the image shows and black where it is masked out. Returns a TBitmap the
// caller owns, or nil when the image has no usable colour-key mask; a nil
// hook draws such images unmasked
DecodeColorKeyMask: function(Context: Pointer;
Stream: THPDFStreamObject): TBitmap;
// Look up a font dictionary by resource key in a Resources dict, following
// indirect refs at both /Resources and /Font levels. Returns nil if absent
ResolveFontDict: function(Context: Pointer; PageObj: THPDFDictionaryObject;
const FontKey: AnsiString): THPDFDictionaryObject;
// v2.377.0 optional-content visibility oracle: evaluates an /OC property
// object (OCG or OCMD) against the document's layer states. Nil hook or
// a True result means the content is drawn
EvalOCVisibility: function(Context: Pointer; PropObj: THPDFObject): boolean;
CancellationToken: THPDFCancellationToken;
ColourIntent: Integer;
FallbackPolicy: THPDFRenderFallbackPolicy;
FallbackDiagnosticLimit: Integer;
OverprintPreview: boolean;
ProofICCProfile: TBytes;
OutputICCProfile: TBytes;
BlackPointCompensation: boolean;
SeparationPlate: AnsiString;
end;
Unit
HPDFPageRenderer
Felder
| Feld | Zweck |
|---|---|
Context | Vom Aufrufer gelieferter Kontextzeiger, der als erstes Argument jedes Callbacks übergeben wird; das Dokument bindet sich hier selbst |
SharedCache | Renderer-Cache, den sich mehrere Seiten teilen können, wenn ShareRenderCaches aktiviert ist |
ShareRenderCaches | True, wenn das Dokument nebenläufigen Renderern erlaubt, Dekodier-Caches zu teilen |
ResolveObject | Generischer Auflöser für indirekte Referenzen beliebigen Objekttyps; ergänzt, weil die typisierten Auflöser für nicht passende Typen nil zurückgeben |
ResolveDictionary | Löst eine indirekte Referenz auf ein Dictionary-Objekt auf, nil für andere Typen |
ResolveStream | Löst eine indirekte Referenz auf ein Stream-Objekt auf |
ReadDecodedStreamBytes | Liest einen Strom vollständig dekodiert in ein Byte-Array |
AcquireDecodedImageStream | Dekodiert ein Bild-XObject in ein gemeinsames, referenzgezähltes Bitmap-Handle |
DecodeImageStream | Dekodiert ein Bild-XObject in eine dem Aufrufer gehörende Bitmap |
BeginProgressiveImageDecode | Startet einen abbrechbaren progressiven Dekoder für einen großen Bildstrom |
DecodeImageRegion | Dekodiert eine Teilregion eines Bilds in einer angeforderten Pixelgröße |
AcquireDecodedImageRegion | Regionsvariante, die ein gemeinsames, referenzgezähltes Bitmap-Handle zurückgibt |
DecodeInlineImage | Dekodiert ein Inline-Bild aus rohen ID..EI-Bytes und dem normalisierten BI-Schlüsselsatz, unter Umgehung des Objektnummer-Caches; nil-Hook bedeutet, Inline-Bilder werden nicht gerendert |
DecodeColorKeyMask | Macht das Color-key-/Mask-Array eines Bild-XObjects zu einer schwarz-weißen Soft-Mask in der Größe des Bilds; nil, wenn das Bild keine brauchbare Color-Key-Maske hat, und ein nil-Hook zeichnet solche Bilder unmaskiert |
ResolveFontDict | Schlägt ein Font-Dictionary über einen Ressourcenschlüssel nach und folgt dabei indirekten Referenzen auf /Resources- und /Font-Ebene; nil, wenn nicht vorhanden |
EvalOCVisibility | Wertet ein /OC-Eigenschaftsobjekt gegen die Layer-Zustände des Dokuments aus; nil-Hook oder Ergebnis True bedeutet, der Inhalt wird gezeichnet |
CancellationToken | Cancellation-Token, das bei langen Dekodieroperationen geprüft wird |
ColourIntent | Farblicher Behandlungs-Intent, der auf den gerenderten Grafikzustand angewandt wird |
FallbackPolicy | Wählt, ob nicht unterstützte Features ignoriert, gemeldet oder als strenge Fehler behandelt werden |
FallbackDiagnosticLimit | Begrenzt die Anzahl der beim Zurückfallen gesammelten Diagnosemeldungen |
OverprintPreview | Aktiviert die Overprint-Preview-Simulation |
ProofICCProfile | ICC-Profil-Bytes für die Proofing-Seite der Farb-Pipeline |
OutputICCProfile | ICC-Profil-Bytes, die das Ausgabegerät beschreiben |
BlackPointCompensation | Aktiviert die Black-Point-Kompensation in der ICC-Transformation |
SeparationPlate | Name der zu isolierenden Separationsplatte; leer rendert normal |
Verwendungshinweise
- THotPDF bindet jeden Hook über seinen internen
MakeRenderDocAccess-Helfer, daher erhalten Anwendungen einen fertigen Record, statt einen auszufüllen - Eigene Render-Backends lesen diese Hooks aus
THPDFPageRenderBackendRequest, statt direkt ins Dokument zu greifen - Lassen Sie
DecodeInlineImageoderEvalOCVisibilityauf nil, um das frühere Verhalten wiederherzustellen: Inline-Bilder überspringen und allen optionalen Inhalt zeichnen