PDFium Delphi Component Docs

ObjectTransparent Свойство

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

Syntax

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

Description

PDF 1.4 ввёл Transparency Imaging Model (PDF 32000-1 § 11), позволяющий любому объекту страницы задать alpha графического состояния (ca/CA) и blend mode (BM в словаре ExtGState). ObjectTransparent возвращает True, если PDFium обнаружил что-то из этого у объекта в Index, то есть рендерер не может просто перекрашивать поверх и обязан выделить для объекта изолированный compositing-буфер

Это пообъектный аналог Transparent, который сообщает, есть ли прозрачный контент на всей текущей странице. Пригодится, когда нужно флэттить только дорогие участки страницы, аудитить входящие PDF для типографских конвейеров, не понимающих transparency, или ускорять собственный рендеринг, отсекая compositing для большинства полностью непрозрачных объектов

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

Parameters

IndexИндекс объекта страницы с нуля, 0 ≤ Index < ObjectCount

Remarks

Example

// 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;

See Also

ObjectCount, ObjectType, ObjectBounds, Transparent