function GetAnnotationDictionaryValue(AnnotIndex: Integer; const Key: WString): TPdfDictionaryValue;
| AnnotIndex | Integer. Indeks adnotacji na bieżącej stronie liczony od zera, w zakresie 0 .. AnnotationCount - 1. Indeks poza zakresem zgłasza EPdfError |
| Key | WString. Nazwa wpisu słownika do odczytania, kodowana w UTF-8 przed wywołaniem natywnym |
| Result | TPdfDictionaryValue. Kind niesie natywny typ wartości; wartości string, name i number są dekodowane do StringValue / NumberValue z HasScalarValue = True |
Każda adnotacja ma za sobą słownik PDF, a model rekordowy komponentu mapuje tylko wspólne wpisy. To wywołanie sięga do surowego słownika i odczytuje pojedynczy klucz, więc wpisy zdefiniowane przez aplikację (status recenzji, identyfikator grupowania, rozszerzenie dostawcy) stają się widoczne bez przechodzenia po grafie obiektów
Rodzaj wartości jest odpytywany natywnie i dekodowany do TPdfDictionaryValueKind: pdvkUnknown, pdvkBoolean, pdvkNumber, pdvkString, pdvkName, pdvkArray, pdvkDictionary, pdvkStream, pdvkNull lub pdvkReference. Pobierane są wyłącznie rodzaje skalarne: stringi i nazwy są dekodowane do StringValue, liczby do NumberValue (odczytywane z pojedynczą precyzją przez natywne API), a HasScalarValue oznacza udany odczyt. Wartości bez ładunku skalarnego — booleany, tablice, zagnieżdżone słowniki, strumienie — są raportowane wyłącznie przez Kind
Dla kluczy już udostępnianych przez model rekordowy preferuj Annotation: normalizuje i waliduje wspólne pola. Sięgaj po to wywołanie tylko wtedy, gdy klucz wykracza poza model
pdvkUnknown z HasScalarValue = False; ta kombinacja oznacza “brak wartości”T (podtyp) i t to różne wpisy
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;