Záznam THPDFRenderDocAccess
Váže renderer na služby dokumentu: resolve referencí, čtení streamů, dekódování obrázků, vyhledávání fontů a vyhodnocování viditelnosti vrstev
Deklarace
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;
Jednotka
HPDFPageRenderer
Pole
| Pole | Účel |
|---|---|
Context | Kontextový ukazatel dodaný volajícím, předávaný jako první argument každého callbacku; dokument se tady sám naváže |
SharedCache | Cache rendereru, kterou si může několik stránek sdílet, když je zapnuté ShareRenderCaches |
ShareRenderCaches | True, když dokument dovolí souběžným rendererům sdílet dekódovací cache |
ResolveObject | Obecný resolver nepřímých referencí pro jakýkoli typ objektu; přibyl, protože typované resolvers vrací nil u nesedících typů |
ResolveDictionary | Rozhodne nepřímou referenci na objekt slovníku, nil u ostatních typů |
ResolveStream | Rozhodne nepřímou referenci na stream objekt |
ReadDecodedStreamBytes | Přečte stream úplně dekódovaný do bajtového pole |
AcquireDecodedImageStream | Dekóduje obrazový XObject do sdíleného handle bitmapy s počítáním referencí |
DecodeImageStream | Dekóduje obrazový XObject do bitmapy vlastněné volajícím |
BeginProgressiveImageDecode | Spustí zrušitelný progresivní dekodér pro velký obrazový stream |
DecodeImageRegion | Dekóduje podregion obrázku v požadované velikosti v pixelech |
AcquireDecodedImageRegion | Regionální varianta vracející sdílený handle bitmapy s počítáním referencí |
DecodeInlineImage | Dekóduje inline obrázek ze surových bajtů ID..EI a normalizované sady klíčů BI, čímž obchází cache čísel objektů; nil hook znamená, že inline obrázky se nevykreslují |
DecodeColorKeyMask | Převede color-key pole /Mask XObjectu obrazu na bílo-černou měkkou masku velikosti obrazu; nil, když obraz nemá použitelnou color-key masku, a nil hook takové obrazy kreslí bez maskování |
ResolveFontDict | Najde slovník fontu podle klíče prostředku a sleduje nepřímé reference na úrovních /Resources a /Font; nil, když chybí |
EvalOCVisibility | Vyhodnotí objekt vlastnosti /OC proti stavům vrstev dokumentu; nil hook nebo výsledek True znamená, že obsah se kreslí |
CancellationToken | Cancellation token kontrolovaný během dlouhých dekódovacích operací |
ColourIntent | Intent nakládání s barvami aplikovaný na vykreslený grafický stav |
FallbackPolicy | Volí, jestli se nepodporované vlastnosti ignorují, hlásí, nebo berou jako přísná selhání |
FallbackDiagnosticLimit | Stropuje počet diagnostických zpráv sbíraných během fallbacku |
OverprintPreview | Zapíná simulaci náhledu overprintu |
ProofICCProfile | Bajty ICC profilu použité pro proofingovou stranu barevné pipeline |
OutputICCProfile | Bajty ICC profilu popisující výstupní zařízení |
BlackPointCompensation | Zapíná black point compensation v ICC transformaci |
SeparationPlate | Název separační barvy k izolaci; prázdný znamená normální vykreslování |
Poznámky k použití
- THotPDF váže každý hook přes svého interního helpera
MakeRenderDocAccess, takže aplikace dostanou hotový záznam a nemusí ho vyplňovat - Vlastní render backendy čtou tyto hooks z
THPDFPageRenderBackendRequestmísto sahání přímo do dokumentu - Ponechte
DecodeInlineImageneboEvalOCVisibilitynil, chcete-li vrátit původní chování: přeskakování inline obrázků a kreslení veškerého volitelného obsahu