function GetAnnotationDictionaryValue(AnnotIndex: Integer; const Key: WString): TPdfDictionaryValue;
| AnnotIndex | Integer. Nullbasert indeks for merknaden på den gjeldende siden, i området 0 .. AnnotationCount - 1. En indeks utenfor området utløser en EPdfError |
| Key | WString. Navnet på ordboksoppføringen som skal leses, UTF-8-kodet før det native kallet |
| Result | TPdfDictionaryValue. Kind bærer den native verditypen; streng-, navne- og tallverdier dekodes inn i StringValue / NumberValue med HasScalarValue = True |
Hver merknad ligger bak en PDF-ordbok, og komponentens recordmodell kartlegger bare de vanlige oppføringene. Dette kallet går rett inn i rå-ordboken og leser én enkelt nøkkel, så applikasjonsdefinerte oppføringer (en review-status, en grupperings-id, en leverandørutvidelse) blir synlige uten å traversere objektgrafen
Verdikinden spørres nativt og dekodes til en TPdfDictionaryValueKind: pdvkUnknown, pdvkBoolean, pdvkNumber, pdvkString, pdvkName, pdvkArray, pdvkDictionary, pdvkStream, pdvkNull eller pdvkReference. Bare skalarmodene hentes: strenger og navn dekodes inn i StringValue, tall inn i NumberValue (lest med enkelt presisjon av det native API-et), og HasScalarValue markerer en vellykket henting. Verdier uten skalarlast — booleanske verdier, arrays, nestede ordbøker, strømmer — rapporteres av Kind alene
For nøkler som recordmodellen allerede eksponerer, foretrekk Annotation: den normaliserer og validerer de vanlige feltene. Grip etter dette kallet bare når en nøkkel ligger utenfor modellen
pdvkUnknown med HasScalarValue = False; den kombinasjonen betyr «ingen verdi».T (subtypen) og t er forskjellige oppføringer.
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;