function GetAnnotationDictionaryValue(AnnotIndex: Integer; const Key: WString): TPdfDictionaryValue;
| AnnotIndex | Integer. Indice cu bază zero al adnotării pe pagina curentă, în intervalul 0 .. AnnotationCount - 1. Un indice în afara intervalului ridică un EPdfError |
| Key | WString. Numele intrării din dicționar de citit, codificat UTF-8 înaintea apelului nativ |
| Result | TPdfDictionaryValue. Kind poartă tipul nativ al valorii; valorile de tip string, name și number sunt decodate în StringValue / NumberValue cu HasScalarValue = True |
Fiecare adnotare este susținută de un dicționar PDF, iar modelul de înregistrări al componentei mapează doar intrările comune. Acest apel pătrunde în dicționarul brut și citește o singură cheie, astfel încât intrările definite de aplicație (o stare de revizuire, un id de grupare, o extensie de furnizor) devin vizibile fără a parcurge graful de obiecte
Felul valorii este interogat nativ și decodat într-un TPdfDictionaryValueKind: pdvkUnknown, pdvkBoolean, pdvkNumber, pdvkString, pdvkName, pdvkArray, pdvkDictionary, pdvkStream, pdvkNull sau pdvkReference. Sunt aduse doar felurile scalare: șirurile și numele sunt decodate în StringValue, numerele în NumberValue (citite la precizie simplă de API-ul nativ), iar HasScalarValue marchează o aducere reușită. Valorile fără sarcină utilă scalară — booleene, vectori, dicționare imbricate, fluxuri — sunt raportate doar prin Kind
Pentru cheile pe care modelul de înregistrări le expune deja, preferați Annotation: el normalizează și validează câmpurile comune. Recurați la acest apel doar când o cheie se află în afara modelului
pdvkUnknown cu HasScalarValue = False; acea combinație înseamnă “fără valoare”T (subtipul) și t sunt intrări diferite
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;