PDFium Delphi Component Docs

GetAnnotationDictionaryValue Метод

Компонент: TPdf  ·  Модуль: PDFium
Читает один ключ напрямую из словаря аннотации на текущей странице и сообщает тип значения вместе с декодированным скаляром

Syntax

function GetAnnotationDictionaryValue(AnnotIndex: Integer; const Key: WString): TPdfDictionaryValue;

AnnotIndexInteger. Индекс аннотации на текущей странице с отсчётом от нуля, в диапазоне 0 .. AnnotationCount - 1. Индекс вне диапазона возбуждает EPdfError
KeyWString. Имя читаемой записи словаря, перед вызовом нативного API кодируется в UTF-8
ResultTPdfDictionaryValue. Kind несёт собственный тип значения; строки, имена и числа декодируются в StringValue / NumberValue с HasScalarValue = True

Description

Каждая аннотация опирается на словарь PDF, и модель записей компонента отображает только общие записи. Этот вызов обращается к исходному словарю и читает один ключ, поэтому определённые приложением записи (статус рецензирования, идентификатор группировки, расширение поставщика) становятся видимыми без обхода графа объектов

Тип значения запрашивается нативно и декодируется в TPdfDictionaryValueKind: pdvkUnknown, pdvkBoolean, pdvkNumber, pdvkString, pdvkName, pdvkArray, pdvkDictionary, pdvkStream, pdvkNull или pdvkReference. Извлекаются только скалярные типы: строки и имена декодируются в StringValue, числа — в NumberValue (нативный API читает их с одинарной точностью), а HasScalarValue отмечает успешное извлечение. Значения без скалярного содержимого — булевы, массивы, вложенные словари, потоки — сообщаются только через Kind

Для ключей, которые модель записей уже раскрывает, предпочтительнее Annotation: он нормализует и проверяет общие поля. Обращайтесь к этому вызову, только когда ключ лежит вне модели

Remarks

Example

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;

See Also

Annotation, AnnotationCount, GetAttachmentDictionaryValue