function GetAnnotationDictionaryValue(AnnotIndex: Integer; const Key: WString): TPdfDictionaryValue;
| AnnotIndex | Integer. A jegyzet nulla alapú indexe az aktuális oldalon, a 0 .. AnnotationCount - 1 tartományban. A tartományon kívüli index EPdfError kivételt vált ki |
| Key | WString. Az olvasandó szótárbejegyzés neve, a natív hívás előtt UTF-8 kódolással |
| Result | TPdfDictionaryValue. A Kind hordozza a natív értéktípust; a sztring-, név- és számértékek HasScalarValue = True mellett StringValue / NumberValue formában dekódolódnak |
Minden jegyzetet egy PDF-szótár támogat, és a komponens rekordmodellje csak a gyakori bejegyzéseket képezi le. Ez a hívás közvetlenül a nyers szótárba nyúl és egyetlen kulcsot olvas ki, így az alkalmazás által definiált bejegyzések (átvizelési állapot, csoportosító azonosító, szállítói kiterjesztés) az objektumgráf bejárása nélkül is láthatóvá válnak
Az értékfajta natívan kérdeződik le, és TPdfDictionaryValueKind értékké dekódolódik: pdvkUnknown, pdvkBoolean, pdvkNumber, pdvkString, pdvkName, pdvkArray, pdvkDictionary, pdvkStream, pdvkNull vagy pdvkReference. Csak a skaláris fajták töltődnek le: a sztringek és nevek StringValue-ként, a számok NumberValue-ként dekódolódnak (a natív API egyszeres pontossággal olvassa őket), a HasScalarValue pedig a sikeres letöltést jelzi. A skaláris adatot nem hordozó értékek — logikai értékek, tömbök, beágyazott szótárak, streamek — kizárólag a Kind mezőn keresztül jelennek meg
Azoknál a kulcsoknál, amelyeket a rekordmodell már felfed, részesítse előnyben az Annotation tulajdonságot: az normalizálja és ellenőrzi a gyakori mezőket. Csak akkor nyúljon ehhez a híváshoz, ha a kulcs a modellen kívül esik
pdvkUnknown, HasScalarValue = False mellett; ez a kombináció jelenti a „nincs érték” állapototT (a szubtípus) és a t különböző bejegyzések
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;