THPDFRenderDocAccess Record
Wiąże renderer z usługami dokumentu do rozwiązywania referencji, czytania strumieni, dekodowania obrazów, odnajdowania czcionek i oceniania widoczności warstw
Deklaracja
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;
Jednostka
HPDFPageRenderer
Pola
| Pole | Przeznaczenie |
|---|---|
Context | Wskaźnik kontekstu podany przez wywołującego, przekazywany jako pierwszy argument każdego callbacka; dokument wpina tu sam siebie |
SharedCache | Pamięć podręczna renderera, którą kilka stron może współdzielić, gdy włączone jest ShareRenderCaches |
ShareRenderCaches | True, gdy dokument pozwala współbieżnym rendererom współdzielić cache dekodowania |
ResolveObject | Ogólny rozwiązywacz referencji pośrednich dla dowolnego typu obiektu; dodany, bo typowane rozwiązywacze zwracają nil dla niedopasowanych typów |
ResolveDictionary | Rozwiązuje referencję pośrednią na obiekt słownika, nil dla innych typów |
ResolveStream | Rozwiązuje referencję pośrednią na obiekt strumienia |
ReadDecodedStreamBytes | Czyta strumień w pełni zdekodowany do tablicy bajtów |
AcquireDecodedImageStream | Dekoduje XObject obrazu do współdzielonego uchwytu bitmapy z licznikiem referencji |
DecodeImageStream | Dekoduje XObject obrazu do bitmapy należącej do wywołującego |
BeginProgressiveImageDecode | Uruchamia anulowalny dekoder progresywny dla dużego strumienia obrazu |
DecodeImageRegion | Dekoduje podobszar obrazu w żądanym rozmiarze w pikselach |
AcquireDecodedImageRegion | Wariant regionalny zwracający współdzielony uchwyt bitmapy z licznikiem referencji |
DecodeInlineImage | Dekoduje obraz inline z surowych bajtów ID..EI i znormalizowanego zbioru kluczy BI, omijając cache numerów obiektów; hak nil oznacza, że obrazy inline nie są renderowane |
DecodeColorKeyMask | Zamienia tablicę color-key /Mask XObjecta obrazu w miękką maskę bieli i czerni w rozmiarze obrazu; nil, gdy obraz nie ma użytecznej maski color-key, a hak nil rysuje takie obrazy bez maski |
ResolveFontDict | Szuka słownika czcionki po kluczu zasobu, podążając za referencjami pośrednimi na poziomach /Resources i /Font; nil, gdy brak |
EvalOCVisibility | Ocenia obiekt właściwości /OC względem stanów warstw dokumentu; hak nil albo wynik True oznaczają, że treść jest rysowana |
CancellationToken | Token anulowania sprawdzany podczas długich operacji dekodowania |
ColourIntent | Intencja obsługi koloru stosowana do wyrenderowanego stanu grafiki |
FallbackPolicy | Wybiera, czy nieobsługiwane cechy są ignorowane, raportowane, czy traktowane jako twarde porażki |
FallbackDiagnosticLimit | Ogranicza liczbę komunikatów diagnostycznych zbieranych podczas fallbacku |
OverprintPreview | Włącza symulację podglądu overprint |
ProofICCProfile | Bajty profilu ICC używane po stronie proofingu potoku koloru |
OutputICCProfile | Bajty profilu ICC opisujące urządzenie wyjściowe |
BlackPointCompensation | Włącza kompensację czarnego punktu w transformacji ICC |
SeparationPlate | Nazwa płyty separacyjnej do wyizolowania; pusta renderuje normalnie |
Uwagi dotyczące użycia
- THotPDF wpina każdy hak przez swój wewnętrzny pomocnik
MakeRenderDocAccess, więc aplikacje dostają gotowy rekord zamiast go wypełniać - Własne backendy renderowania czytają te haki z
THPDFPageRenderBackendRequest, zamiast sięgać bezpośrednio do dokumentu - Zostaw
DecodeInlineImagealboEvalOCVisibilityjako nil, aby przywrócić dawne zachowanie: pomijanie obrazów inline i rysowanie całej treści opcjonalnej