function GetAnnotationDictionaryValue(AnnotIndex: Integer; const Key: WString): TPdfDictionaryValue;
| AnnotIndex | Integer. Index anotace na aktuální stránce počítaný od nuly, v rozsahu 0 .. AnnotationCount - 1. Index mimo rozsah vyvolá EPdfError |
| Key | WString. Název čtené položky slovníku, před nativním voláním kódovaný v UTF-8 |
| Result | TPdfDictionaryValue. Kind nese nativní typ hodnoty; řetězcové, name a číselné hodnoty se dekódují do StringValue / NumberValue s HasScalarValue = True |
Každá anotace je podložena slovníkem PDF a recordový model komponenty mapuje jen běžné položky. Toto volání zajde do surového slovníku a přečte jeden klíč, takže aplikačně definované položky (stav revize, skupinové id, rozšíření dodavatele) se stanou viditelnými bez procházení grafu objektů
Druh hodnoty se dotazuje nativně a dekóduje do TPdfDictionaryValueKind: pdvkUnknown, pdvkBoolean, pdvkNumber, pdvkString, pdvkName, pdvkArray, pdvkDictionary, pdvkStream, pdvkNull nebo pdvkReference. Stahují se jen skalární druhy: řetězce a name se dekódují do StringValue, čísla do NumberValue (čtená nativním API v jednoduché přesnosti) a HasScalarValue značí úspěšné stažení. Hodnoty bez skalárního payloadu — booleany, pole, vnořené slovníky, streamy — se hlásí jen přes Kind
Pro klíče, které recordový model už vystavuje, upřednostněte Annotation: ta normalizuje a validuje běžná pole. Sáhněte po tomto volání, jen když klíč leží mimo model
pdvkUnknown s HasScalarValue = False; tato kombinace znamená „žádnou hodnotu“T (subtype) a t jsou různé 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;