function GetAnnotationDictionaryValue(AnnotIndex: Integer; const Key: WString): TPdfDictionaryValue;
| AnnotIndex | Integer. Zero-based index του σχολίου στην τρέχουσα σελίδα, στο εύρος 0 .. AnnotationCount - 1. Index εκτός εύρους εγείρει EPdfError. |
| Key | WString. Όνομα της εγγραφής λεξικού προς ανάγνωση, κωδικοποιημένο σε UTF-8 πριν την native κλήση |
| Result | TPdfDictionaryValue. Το Kind μεταφέρει τον native τύπο τιμής· οι τιμές string, name και number αποκωδικοποιούνται σε StringValue / NumberValue με HasScalarValue = True. |
Κάθε σχόλιο υποστηρίζεται από ένα λεξικό PDF, και το μοντέλο εγγραφών του component αντιστοιχίζει μόνο τις συνηθισμένες εγγραφές. Αυτή η κλήση φτάνει στο ακατέργαστο λεξικό και διαβάζει ένα μοναδικό κλειδί, ώστε εγγραφές που ορίζει η εφαρμογή (κατάσταση ανασκόπησης, id ομαδοποίησης, επέκταση προμηθευτή) να γίνονται ορατές χωρίς διάσχιση του γραφήματος αντικειμένων
Το είδος της τιμής ερωτάται native και αποκωδικοποιείται σε TPdfDictionaryValueKind: pdvkUnknown, pdvkBoolean, pdvkNumber, pdvkString, pdvkName, pdvkArray, pdvkDictionary, pdvkStream, pdvkNull ή pdvkReference. Ανακτώνται μόνο τα scalar είδη: strings και names αποκωδικοποιούνται σε StringValue, numbers σε NumberValue (αναγιγνόμενα σε απλή ακρίβεια από το native API), και το HasScalarValue σηματοδοτεί επιτυχή ανάκτηση. Τιμές χωρίς scalar περιεχόμενο — booleans, πίνακες, εμφωλευμένα λεξικά, streams — αναφέρονται μόνο μέσω του Kind
Για κλειδιά που το μοντέλο εγγραφών ήδη εκθέτει, προτιμήστε το Annotation: κανονικοποιεί και επικυρώνει τα συνηθισμένα πεδία. Καταφύγετε σε αυτή την κλήση μόνο όταν ένα κλειδί βρίσκεται εκτός του μοντέλου
pdvkUnknown με HasScalarValue = False· αυτός ο συνδυασμός σημαίνει «καμία τιμή»T (το subtype) και το t είναι διαφορετικές εγγραφές
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;