PDFium Delphi Component Docs

ObjectTransparent Eigenschaft

Komponente: TPdf  ·  Unit: PDFium
Gibt an, ob ein Seitenobjekt an PDF-Transparenz beteiligt ist — entweder über einen nicht deckenden Füll- oder Strich-Alpha-Wert oder über einen Blendmodus ungleich Normal — und daher Compositing statt einfachem Painter's-Algorithm-Rendering benötigt

Syntax

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

Description

PDF 1.4 führte das Transparency Imaging Model ein (PDF 32000-1 § 11), das jedem Seitenobjekt eine Graphics-State-Alpha (ca/CA) und einen Blend- mode (BM im ExtGState-Dictionary) erlaubt. ObjectTransparent liefert True, wenn PDFium beim Objekt an Index eines von beiden findet, das heißt: Der Renderer kann nicht einfach drübermalen und muss einen isolierten Compositing- Puffer für das Objekt allokieren

Das ist das Objekt-Pendant zu Transparent, das meldet, ob die gesamte aktuelle Seite transparenten Inhalt enthält. Verwenden Sie es, wenn Sie nur die teuren Teile einer Seite flatten wollen, eingehende PDFs auf Druckerei- Pipelines prüfen wollen, die mit Transparenz nichts anfangen können, oder wenn Sie eigenes Rendering beschleunigen wollen, indem Sie das Compositing für die meisten vollständig opaken Objekte überspringen

Das Ergebnis spiegelt den eigenen Graphics State des Objekts zum Einfügezeitpunkt wider. Wird das Objekt geändert (etwa über natives FPDFPageObj_SetFillColor mit einer Alpha ungleich 255), ändert sich der gemeldete Wert erst, nachdem UpdatePage und ReloadPage die gecachte Seite neu aufgebaut haben

Parameters

IndexZero-based page-object 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