Запис THPDFRenderDocAccess
Прив'язує рендерер до сервісів документа для розв'язання посилань, читання потоків, декодування зображень, пошуку шрифтів і оцінювання видимості шарів
Оголошення
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
Поля
| Поле | Призначення |
|---|---|
Context | Вказівник контексту від викликача, що передається першим аргументом кожного callback; документ прив'язує себе тут |
SharedCache | Кеш рендерера, яким можуть спільно користуватися кілька сторінок, коли увімкнено ShareRenderCaches |
ShareRenderCaches | True, коли документ дозволяє паралельним рендерерам спільно користуватися кешами декодування |
ResolveObject | Загальний розв'язувач непрямих посилань для будь-якого типу об'єктів; доданий, бо типізовані розв'язувачі повертають nil для неспівпадних типів |
ResolveDictionary | Розв'язує непряме посилання на об'єкт-словник; nil для інших типів |
ResolveStream | Розв'язує непряме посилання на об'єкт-потік |
ReadDecodedStreamBytes | Читає потік повністю декодованим у масив байтів |
AcquireDecodedImageStream | Декодує XObject-зображення у спільний дескриптор растрової карти з підрахунком посилань |
DecodeImageStream | Декодує XObject-зображення у растрову карту у володінні викликача |
BeginProgressiveImageDecode | Запускає придатний до скасування прогресивний декодер для великого потоку зображення |
DecodeImageRegion | Декодує підобласть зображення за запитаним піксельним розміром |
AcquireDecodedImageRegion | Регіонний варіант, що повертає спільний дескриптор растрової карти з підрахунком посилань |
DecodeInlineImage | Декодує inline-зображення із сирих байтів ID..EI і нормалізованої множини ключів BI, оминаючи кеш за номером об'єкта; nil-гачок означає, що inline-зображення не рендеряться |
DecodeColorKeyMask | Перетворює масив color-key /Mask XObject зображення на біло-чорну м'яку маску розміру зображення; nil, коли зображення не має придатної color-key маски, а nil-гачок малює такі зображення без маскування |
ResolveFontDict | Шукає словник шрифту за ключем ресурсу, простежуючи непрямі посилання на рівнях /Resources і /Font; nil, коли відсутній |
EvalOCVisibility | Оцінює об'єкт властивості /OC щодо станів шарів документа; nil-гачок чи результат True означає, що вміст малюється |
CancellationToken | Токен скасування, що перевіряється під час довгих операцій декодування |
ColourIntent | Намір обробки кольору, що застосовується до відрендерованого графічного стану |
FallbackPolicy | Визначає, чи непідтримувані можливості ігноруються, звітуються чи вважаються строгими невдачами |
FallbackDiagnosticLimit | Обмежує кількість діагностичних повідомлень, зібраних під час відкочування |
OverprintPreview | Увімкнює симуляцію попереднього перегляду overprint |
ProofICCProfile | Байти ICC-профіля для доказової сторони колірного конвеєра |
OutputICCProfile | Байти ICC-профіля, що описує пристрій виводу |
BlackPointCompensation | Увімкнює компенсацію чорної точки в ICC-перетворенні |
SeparationPlate | Назва плашкової форми для ізоляції; порожня — рендеринг звичайний |
Примітки щодо використання
- THotPDF прив'язує кожен гачок через свій внутрішній помічник
MakeRenderDocAccess, тож застосунки отримують готовий запис замість заповнення свого - Власні бекенди рендерингу читають ці гачки з
THPDFPageRenderBackendRequest, замість того щоб лізти в документ напряму - Лишайте
DecodeInlineImageчиEvalOCVisibilityрівними nil, щоб повернути успадковану поведінку: пропуск inline-зображень і малювання всього необов'язкового вмісту