THPDFRenderDocAccess Record
Vincula o renderer aos serviços do documento para resolver referências, ler streams, decodificar imagens, localizar fontes e avaliar visibilidade de camadas
Declaração
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;
Unidade
HPDFPageRenderer
Campos
| Campo | Finalidade |
|---|---|
Context | Ponteiro de contexto fornecido pelo chamador, passado como primeiro argumento de cada callback; o documento se vincula aqui |
SharedCache | Cache do renderer que várias páginas podem compartilhar quando ShareRenderCaches está habilitado |
ShareRenderCaches | True quando o documento permite que renderers concorrentes compartilhem caches de decodificação |
ResolveObject | Resolvedor genérico de referências indiretas para qualquer tipo de objeto; adicionado porque os resolvedores tipados retornam nil para tipos que não correspondem |
ResolveDictionary | Resolve uma referência indireta para um objeto dicionário, nil para outros tipos |
ResolveStream | Resolve uma referência indireta para um objeto stream |
ReadDecodedStreamBytes | Lê um stream totalmente decodificado em um array de bytes |
AcquireDecodedImageStream | Decodifica um XObject de imagem em um handle de bitmap compartilhado e com contagem de referências |
DecodeImageStream | Decodifica um XObject de imagem em um bitmap de propriedade do chamador |
BeginProgressiveImageDecode | Inicia um decoder progressivo cancelável para um stream de imagem grande |
DecodeImageRegion | Decodifica uma sub-região de uma imagem em um tamanho de pixel solicitado |
AcquireDecodedImageRegion | Variante de região que retorna um handle de bitmap compartilhado e com contagem de referências |
DecodeInlineImage | Decodifica uma imagem inline de bytes brutos ID..EI e do conjunto de chaves BI normalizado, contornando o cache de números de objeto; hook nil significa que imagens inline não são renderizadas |
DecodeColorKeyMask | Transforma o array /Mask de color-key de um image XObject em uma soft mask branca e preta do tamanho da imagem; nil quando a imagem não tem uma máscara de color-key utilizável, e um hook nil desenha essas imagens sem máscara |
ResolveFontDict | Localiza um dicionário de fonte pela chave de recurso, seguindo referências indiretas nos níveis /Resources e /Font; nil quando ausente |
EvalOCVisibility | Avalia um objeto de propriedade /OC contra os estados de camada do documento; hook nil ou resultado True significa que o conteúdo é desenhado |
CancellationToken | Cancellation token conferido durante operações de decodificação longas |
ColourIntent | Intent de tratamento de cor aplicado ao graphics state renderizado |
FallbackPolicy | Seleciona se recursos não suportados são ignorados, reportados ou tratados como falhas estritas |
FallbackDiagnosticLimit | Limita o número de mensagens de diagnóstico coletadas durante o fallback |
OverprintPreview | Habilita a simulação de overprint preview |
ProofICCProfile | Bytes do perfil ICC usados no lado de proofing do pipeline de cores |
OutputICCProfile | Bytes do perfil ICC que descrevem o dispositivo de saída |
BlackPointCompensation | Habilita a compensação de ponto preto na transformação ICC |
SeparationPlate | Nome da plate de separação a isolar; vazio renderiza normalmente |
Notas de uso
- O THotPDF vincula cada hook por meio de seu helper interno
MakeRenderDocAccess, de modo que as aplicações recebem um record pronto em vez de preencher um - Render backends customizados leem estes hooks de
THPDFPageRenderBackendRequestem vez de acessar o documento diretamente - Deixe
DecodeInlineImageouEvalOCVisibilitynil para restaurar o comportamento legado de pular imagens inline e desenhar todo o optional content