function GetAnnotationDictionaryValue(AnnotIndex: Integer; const Key: WString): TPdfDictionaryValue;
| AnnotIndex | Integer. Op nul gebaseerde index van de annotatie op de huidige pagina, in het bereik 0 .. AnnotationCount - 1. Een index buiten het bereik verhoogt een EPdfError |
| Key | WString. Naam van de te lezen dictionary-entry, UTF-8 gecodeerd vóór de native aanroep |
| Result | TPdfDictionaryValue. Kind draagt het native waardetype; string-, name- en number-waarden worden gedecodeerd naar StringValue / NumberValue met HasScalarValue = True |
Elke annotatie is gebaseerd op een PDF-dictionary en het recordmodel van de component mapped alleen de gangbare entries. Deze aanroep gaat naar de ruwe dictionary en leest één enkele sleutel, zodat applicatiegedefinieerde entries (een reviewstatus, een grouping-id, een leveranciersextensie) zichtbaar worden zonder de objectgrafiek te doorlopen
Het soort waarde wordt native opgevraagd en gedecodeerd naar een TPdfDictionaryValueKind: pdvkUnknown, pdvkBoolean, pdvkNumber, pdvkString, pdvkName, pdvkArray, pdvkDictionary, pdvkStream, pdvkNull of pdvkReference. Alleen de scalaire soorten worden opgehaald: strings en names worden gedecodeerd naar StringValue, numbers naar NumberValue (door de native API met single precision gelezen), en HasScalarValue markeert een geslaagde ophaal. Waarden zonder scalaire payload — booleans, arrays, geneste dictionaries, streams — worden alleen via Kind gerapporteerd
Voor sleutels die het recordmodel al blootlegt heeft Annotation de voorkeur: het normaliseert en valideert de gangbare velden. Grijp alleen naar deze aanroep wanneer een sleutel buiten het model ligt
pdvkUnknown met HasScalarValue = False; die combinatie betekent “geen waarde”T (de subtype) en t zijn verschillende entries
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;