Запись THPDFRenderDocAccess
Привязывает рендерер к сервисам документа для разрешения ссылок, чтения stream, декодирования изображений, поиска шрифтов и вычисления видимости слоёв
Объявление
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;
Модуль
HPDFPageRenderer
Поля
| Поле | Назначение |
|---|---|
Context | Переданный вызывающим кодом указатель контекста, который идёт первым аргументом в каждом callback; документ привязывает здесь себя |
SharedCache | Кэш рендерера, которым могут делиться несколько страниц при включённом ShareRenderCaches |
ShareRenderCaches | True, когда документ позволяет параллельным рендерерам делиться кэшами декодирования |
ResolveObject | Универсальный распознаватель косвенных ссылок для любого типа объекта; добавлен потому, что типизированные распознаватели возвращают nil для несовпадающих типов |
ResolveDictionary | Разрешает косвенную ссылку на словарь, nil для других типов |
ResolveStream | Разрешает косвенную ссылку на объект-stream |
ReadDecodedStreamBytes | Читает stream, полностью декодированный в массив байтов |
AcquireDecodedImageStream | Декодирует image XObject в разделяемый дескриптор bitmap со ссылочным подсчётом |
DecodeImageStream | Декодирует image XObject в bitmap, владение которым получает вызывающий код |
BeginProgressiveImageDecode | Запускает отменяемый прогрессивный декодер для большого image stream |
DecodeImageRegion | Декодирует подобласть изображения в запрошенном пиксельном размере |
AcquireDecodedImageRegion | Вариант для области, возвращающий разделяемый дескриптор bitmap со ссылочным подсчётом |
DecodeInlineImage | Декодирует inline-изображение из сырых байтов ID..EI и нормализованного набора ключей BI, минуя кэш по номерам объектов; nil-хук означает, что inline-изображения не отрисовываются |
DecodeColorKeyMask | Превращает массив color-key /Mask изображения XObject в бело-чёрную soft mask размером с изображение; nil, когда у изображения нет пригодного color-key mask, а nil-хук рисует такие изображения без маски |
ResolveFontDict | Ищет словарь шрифта по ресурсному ключу, следуя косвенным ссылкам на уровнях /Resources и /Font; nil, когда отсутствует |
EvalOCVisibility | Вычисляет объект свойства /OC против состояний слоёв документа; nil-хук или True означает, что содержимое рисуется |
CancellationToken | Cancellation token, проверяемый при долгих операциях декодирования |
ColourIntent | Intent обработки цвета, применяемый к отрисованному графическому состоянию |
FallbackPolicy | Выбирает, игнорируются ли неподдерживаемые возможности, сообщаются или считаются строгими сбоями |
FallbackDiagnosticLimit | Ограничивает число диагностических сообщений, собираемых при откате |
OverprintPreview | Включает симуляцию предпросмотра overprint |
ProofICCProfile | Байты ICC-профиля для proofing-стороны цветового конвейера |
OutputICCProfile | Байты ICC-профиля, описывающего выходное устройство |
BlackPointCompensation | Включает компенсацию чёрной точки в ICC-преобразовании |
SeparationPlate | Имя изолируемой цветоделённой формы; пустое значение означает обычную отрисовку |
Примечания по использованию
- THotPDF привязывает каждый хук через свой внутренний помощник
MakeRenderDocAccess, поэтому приложения получают готовую запись, а не заполняют её сами - Пользовательские render backend читают эти хуки из
THPDFPageRenderBackendRequest, а не лезут в документ напрямую - Оставьте
DecodeInlineImageилиEvalOCVisibilityравными nil, чтобы вернуть прежнее поведение: пропуск inline-изображений и отрисовку всего необязательного содержимого