property ObjectTransparent[Index: Integer]: Boolean; // nur lesbar
PDF 1.4 führte das Transparency Imaging Model ein (PDF 32000-1 § 11), das
jedem Seitenobjekt ermöglicht, ein Graphics-State-Alpha (ca/CA)
und einen Blendmodus (BM im ExtGState-Wörterbuch) anzugeben
ObjectTransparent gibt True zurück, wenn PDFium eines davon
am Objekt bei Index erkannt hat, was bedeutet, dass der Renderer nicht
einfach darüberzeichnen kann und einen isolierten Compositing-Puffer für das Objekt
anlegen muss
Dies ist das Gegenstück pro Objekt zu Transparent, das meldet, ob die gesamte aktuelle Seite irgendeinen transparenten Inhalt enthält Verwenden Sie es, wenn Sie nur die teuren Teile einer Seite flachrechnen wollen, eingehende PDFs für Druckerei-Pipelines prüfen wollen, die Transparenz nicht verstehen, oder das benutzerdefinierte Rendern beschleunigen wollen, indem Sie das Compositing für die Mehrheit der vollständig deckenden Objekte früh abbrechen
Das Ergebnis spiegelt den eigenen Graphics-State des Objekts zum Einfügezeitpunkt
wider Eine Änderung des Objekts, zum Beispiel über natives
FPDFPageObj_SetFillColor mit einem Alpha ungleich 255, ändert den
gemeldeten Wert erst, nachdem UpdatePage und
ReloadPage den zwischengespeicherten Zustand neu
aufgebaut haben
| Index | Zero-based page-object index, 0 ≤ Index < ObjectCount. |
TrueFalse melden — die Eigenschaft beschreibt das Objekt selbst, nicht seine Komposition mit GeschwisternFPDFPageObj_HasTransparency und ist absichtlich günstig genug, um in Schleifen über ObjectCount aufgerufen zu werden
// Deckende und transparente Objekte auf der aktuellen Seite zählen
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;