property ObjectTransparent[Index: Integer]: Boolean; // read only
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
| Index | Zero-based page-object index, 0 ≤ Index < ObjectCount. |
TrueFalse melden — die Eigenschaft beschreibt das Objekt selbst, nicht wie es mit Geschwistern komponiert wirdFPDFPageObj_HasTransparency und ist bewusst billig genug für Aufrufe in Schleifen über 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;