function GetAnnotationDictionaryValue(AnnotIndex: Integer; const Key: WString): TPdfDictionaryValue;
| AnnotIndex | Integer. Индекс на анотацията на текущата страница, броен от нула, в диапазона 0 .. AnnotationCount - 1. Индекс извън диапазона вдига EPdfError. |
| Key | WString. Име на речниковия запис за четене, кодиран в UTF-8 преди native извикването. |
| Result | TPdfDictionaryValue. Kind носи native типа на стойността; стойности от тип низ, име и число се декодират в StringValue / NumberValue с HasScalarValue = True. |
Всяка анотация стои върху PDF речник, а записният модел на компонента отразява само често срещаните записи. Това извикване навлиза в суровия речник и прочита един ключ, така че дефинираните от приложението записи (статус на рецензия, идентификатор на групиране, разширение от доставчик) стават видими без обхождане на графа от обекти
Видът на стойността се запитва нативно и се декодира в TPdfDictionaryValueKind: pdvkUnknown, pdvkBoolean, pdvkNumber, pdvkString, pdvkName, pdvkArray, pdvkDictionary, pdvkStream, pdvkNull или pdvkReference. Извличат се само скаларните видове: низовете и имената се декодират в StringValue, числата — в NumberValue (четени с единична точност от native API), а HasScalarValue отбелязва успешно извличане. Стойностите без скаларен payload — булеви стойности, масиви, вложени речници, потоци — се докладват само чрез Kind
За ключовете, които записният модел вече излага, предпочетете Annotation: той нормализира и валидира общите полета. Обърнете се към това извикване само когато ключът е извън модела
pdvkUnknown с HasScalarValue = False; тази комбинация означава „няма стойност“T (подтипът) и 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;