Документация PDFiumPas

ObjectTransparent Свойство

Эта запись API сохраняет идентификаторы, сигнатуры, блоки кода и термины PDF в исходном виде.
Компонент: TPdf  ·  Модуль: PDFium
Указывает, участвует ли page object в PDF transparency — либо через не непрозрачную alpha заливки/обводки, либо через blend mode, отличный от Normal — и поэтому требует compositing, а не простого rendering по painter's algorithm

Синтаксис

property ObjectTransparent[Index: Integer]: Boolean; // read only

Описание

PDF 1.4 introduced Transparency Imaging Model (PDF 32000-1 § 11), который позволяет любому page object задавать alpha graphics-state (ca/CA) и blend mode (BM в словаре ExtGState). ObjectTransparent возвращает True, если PDFium обнаружил что-либо из этого у объекта с Index, что означает: renderer не может просто overpaint и должен выделить изолированный buffer compositing для объекта

Это per-object аналог Transparent, который сообщает, содержит ли вся текущая страница какой-либо transparent content. Используйте его, когда нужно flatten только дорогие участки страницы, проверять incoming PDFs для print-shop pipelines, которые не понимают transparency, или ускорять custom rendering, обходя compositing для большинства полностью opaque объектов

Результат отражает собственное graphics state объекта на момент вставки. Изменение объекта (например, через native FPDFPageObj_SetFillColor с alpha не равной 255) меняет сообщаемое значение только после того, как UpdatePage и ReloadPage заново построят кэшированную страницу

Параметры

IndexИндекс page object с нуля, 0 ≤ Index < ObjectCount

Примечания

Пример

// Count opaque vs transparent objects on the current page.
var I, NOpaque, NAlpha: Integer;
begin
  NOpaque := 0; NAlpha := 0;
  for I := 0 to Pdf1.ObjectCount - 1 do
    if Pdf1.ObjectTransparent[I] then Inc(NAlpha)
    else Inc(NOpaque);
  Memo1.Lines.Add(Format('opaque=%d, transparent=%d', [NOpaque, NAlpha]));
end;

См. также

ObjectCount, ObjectType, ObjectBounds, Transparent