Enregistrement THPDFRenderDocAccess
Lie le renderer aux services du document pour résoudre les références, lire les flux, décoder les images, localiser les polices et évaluer la visibilité des couches
Déclaration
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
Champs
| Champ | Objectif |
|---|---|
Context | Pointeur de contexte fourni par l'appelant, passé en premier argument de chaque callback ; le document se lie ici |
SharedCache | Cache de renderer que plusieurs pages peuvent partager quand ShareRenderCaches est activé |
ShareRenderCaches | True quand le document laisse des renderers concurrents partager les caches de décodage |
ResolveObject | Résolveur générique de références indirectes pour tout type d'objet ; ajouté parce que les résolveurs typés renvoient nil pour les types non correspondants |
ResolveDictionary | Résout une référence indirecte vers un objet dictionnaire, nil pour les autres types |
ResolveStream | Résout une référence indirecte vers un objet flux |
ReadDecodedStreamBytes | Lit un flux entièrement décodé dans un tableau d'octets |
AcquireDecodedImageStream | Décode un XObject d'image en un handle de bitmap partagé à comptage de références |
DecodeImageStream | Décode un XObject d'image en un bitmap propriété de l'appelant |
BeginProgressiveImageDecode | Démarre un décodeur progressif annulable pour un flux d'image volumineux |
DecodeImageRegion | Décode une sous-région d'une image à une taille de pixel demandée |
AcquireDecodedImageRegion | Variante par région renvoyant un handle de bitmap partagé à comptage de références |
DecodeInlineImage | Décode une image inline depuis des octets bruts ID..EI et l'ensemble de clés BI normalisé, en contournant le cache de numéros d'objet ; un hook nil signifie que les images inline ne sont pas rendues |
DecodeColorKeyMask | Transforme le tableau /Mask de color-key d’un image XObject en masque doux blanc et noir à la taille de l’image ; nil quand l’image n’a pas de masque color-key exploitable, et un hook nil dessine de telles images sans masque |
ResolveFontDict | Recherche un dictionnaire de police par clé de ressource, en suivant les références indirectes aux niveaux /Resources et /Font ; nil quand absent |
EvalOCVisibility | Évalue un objet de propriété /OC contre les états de couche du document ; un hook nil ou un résultat True signifie que le contenu est dessiné |
CancellationToken | Token d'annulation vérifié pendant les opérations de décodage longues |
ColourIntent | Intention de traitement des couleurs appliquée à l'état graphique rendu |
FallbackPolicy | Sélectionne si les fonctionnalités non prises en charge sont ignorées, rapportées ou traitées comme des échecs stricts |
FallbackDiagnosticLimit | Plafonne le nombre de messages de diagnostic collectés pendant le repli |
OverprintPreview | Active la simulation d'aperçu de surimpression |
ProofICCProfile | Octets de profil ICC utilisés pour le côté épreuve du pipeline couleur |
OutputICCProfile | Octets de profil ICC décrivant le périphérique de sortie |
BlackPointCompensation | Active la compensation du point noir dans la transformation ICC |
SeparationPlate | Nom de la plaque de séparation à isoler ; vide, le rendu est normal |
Notes d'utilisation
- THotPDF lie chaque hook via son helper interne
MakeRenderDocAccess, si bien que les applications reçoivent un enregistrement prêt au lieu d'en remplir un - Les backends de rendu personnalisés lisent ces hooks depuis
THPDFPageRenderBackendRequestau lieu d'aller dans le document directement - Laissez
DecodeInlineImageouEvalOCVisibilityà nil pour restaurer le comportement historique qui saute les images inline et dessine tout le contenu optionnel