function GetAnnotationDictionaryValue(AnnotIndex: Integer; const Key: WString): TPdfDictionaryValue;
| AnnotIndex | Integer. Index anotácie na aktuálnej stránke od nuly, v rozsahu 0 .. AnnotationCount - 1. Index mimo rozsahu vyvolá EPdfError |
| Key | WString. Názov položky slovníka na čítanie, kódovaný v UTF-8 pred natívnym volaním |
| Result | TPdfDictionaryValue. Kind nesie natívny typ hodnoty; reťazcové, názvové a číselné hodnoty sa dekódujú do StringValue / NumberValue s HasScalarValue = True |
Každá anotácia je podložená slovníkom PDF a záznamový model komponentu mapuje iba bežné položky. Toto volanie siaha do surového slovníka a prečíta jediný kľúč, takže položky definované aplikáciou (stav recenzie, skupinové id, rozšírenie dodávateľa) sa stanú viditeľnými bez prechádzania grafu objektov
Druh hodnoty sa natívne zistí a dekóduje do TPdfDictionaryValueKind: pdvkUnknown, pdvkBoolean, pdvkNumber, pdvkString, pdvkName, pdvkArray, pdvkDictionary, pdvkStream, pdvkNull alebo pdvkReference. Sťahujú sa iba skalárne druhy: reťazce a názvy sa dekódujú do StringValue, čísla do NumberValue (čítané s jednoduchou presnosťou natívnym API) a HasScalarValue označí úspešné stiahnutie. Hodnoty bez skalárneho payloadu — booleany, polia, vnorené slovníky, streamy — sa hlásia iba cez Kind
Pre kľúče, ktoré už záznamový model exponuje, uprednostnite Annotation: bežné polia normalizuje a validuje. Po toto volanie siahnite, až keď kľúč leží mimo modelu
pdvkUnknown s HasScalarValue = False; táto kombinácia znamená “žiadna hodnota”T (subtype) a t sú odlišné položky
var
Value: TPdfDictionaryValue;
begin
// read a vendor-specific review status from annotation 2
Value := Pdf1.GetAnnotationDictionaryValue(2, 'ReviewStatus');
if (Value.Kind = pdvkName) and Value.HasScalarValue then
Memo1.Lines.Add('Status: ' + Value.StringValue);
end;