Record THPDFRenderDocAccess
Liga el renderer a los servicios del documento para resolver referencias, leer streams, decodificar imágenes, localizar fuentes y evaluar la visibilidad de capas
Declaración
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;
Unidad
HPDFPageRenderer
Campos
| Campo | Propósito |
|---|---|
Context | Puntero de contexto suministrado por quien llama, pasado como primer argumento de cada callback; el documento se liga aquí |
SharedCache | Caché del renderer que varias páginas pueden compartir cuando ShareRenderCaches está activo |
ShareRenderCaches | True cuando el documento permite que renderers concurrentes compartan las cachés de decodificación |
ResolveObject | Resolver genérico de referencias indirectas para cualquier tipo de objeto; se agregó porque los resolvers tipados devuelven nil para tipos que no coinciden |
ResolveDictionary | Resuelve una referencia indirecta a un objeto diccionario, nil para otros tipos |
ResolveStream | Resuelve una referencia indirecta a un objeto stream |
ReadDecodedStreamBytes | Lee un stream totalmente decodificado a un array de bytes |
AcquireDecodedImageStream | Decodifica un image XObject a un handle de bitmap compartido con conteo de referencias |
DecodeImageStream | Decodifica un image XObject a un bitmap propiedad de quien llama |
BeginProgressiveImageDecode | Inicia un decoder progresivo cancelable para un stream de imagen grande |
DecodeImageRegion | Decodifica una subregión de una imagen a un tamaño en píxeles solicitado |
AcquireDecodedImageRegion | Variante de región que devuelve un handle de bitmap compartido con conteo de referencias |
DecodeInlineImage | Decodifica una inline image desde los bytes crudos ID..EI y el conjunto de claves BI normalizado, saltándose la caché por número de objeto; un hook nil significa que las inline images no se renderizan |
DecodeColorKeyMask | Convierte el arreglo color-key /Mask de un image XObject en una soft mask blanca y negra del tamaño de la imagen; nil cuando la imagen no tiene una máscara color-key utilizable, y un hook nil dibuja tales imágenes sin máscara |
ResolveFontDict | Busca un diccionario de fuente por clave de recurso, siguiendo referencias indirectas en los niveles /Resources y /Font; nil cuando no existe |
EvalOCVisibility | Evalúa un objeto de propiedad /OC contra los estados de capa del documento; un hook nil o un resultado True significa que el contenido se dibuja |
CancellationToken | Cancellation token comprobado durante operaciones de decodificación largas |
ColourIntent | Intent de manejo de color aplicado al graphics state renderizado |
FallbackPolicy | Selecciona si las funciones no soportadas se ignoran, se reportan o se tratan como fallos estrictos |
FallbackDiagnosticLimit | Acota la cantidad de mensajes de diagnóstico recolectados durante el fallback |
OverprintPreview | Activa la simulación de overprint preview |
ProofICCProfile | Bytes del perfil ICC usados para el lado de proofing del pipeline de color |
OutputICCProfile | Bytes del perfil ICC que describe el dispositivo de salida |
BlackPointCompensation | Activa la compensación de punto negro en la transformación ICC |
SeparationPlate | Nombre de la placa de separación a aislar; vacío renderiza con normalidad |
Notas de uso
- THotPDF liga cada hook mediante su helper interno
MakeRenderDocAccess, así que las aplicaciones reciben un record listo en lugar de llenar uno - Los render backends personalizados leen estos hooks desde
THPDFPageRenderBackendRequesten lugar de entrar directamente al documento - Deje
DecodeInlineImageoEvalOCVisibilityen nil para restaurar el comportamiento legacy de saltar las inline images y dibujar todo el contenido opcional