function GetAnnotationDictionaryValue(AnnotIndex: Integer; const Key: WString): TPdfDictionaryValue;
| AnnotIndex | Integer. Chỉ số của chú thích trên trang hiện tại, đánh số từ 0, trong khoảng 0 .. AnnotationCount - 1. Chỉ số ngoài khoảng làm phát sinh EPdfError |
| Key | WString. Tên của mục dictionary cần đọc, được mã hóa UTF-8 trước lời gọi native |
| Result | TPdfDictionaryValue. Kind mang kiểu giá trị native; các giá trị string, name và number được giải mã vào StringValue / NumberValue với HasScalarValue = True |
Mỗi chú thích đều có một dictionary PDF đứng sau, và mô hình record của component chỉ ánh xạ các mục thông dụng. Lời gọi này chạm thẳng vào dictionary thô để đọc một key duy nhất, nhờ vậy các mục do ứng dụng định nghĩa (một trạng thái review, một grouping id, một phần mở rộng của nhà cung cấp) hiển thị được mà không phải đi qua toàn bộ object graph
Loại giá trị được truy vấn native và giải mã thành một TPdfDictionaryValueKind: pdvkUnknown, pdvkBoolean, pdvkNumber, pdvkString, pdvkName, pdvkArray, pdvkDictionary, pdvkStream, pdvkNull hoặc pdvkReference. Chỉ các loại scalar được lấy: string và name được giải mã vào StringValue, number vào NumberValue (đọc ở độ chính xác single bởi API native), và HasScalarValue đánh dấu lần lấy thành công. Các giá trị không có payload scalar — boolean, array, dictionary lồng nhau, stream — chỉ được báo qua Kind
Với các key mà mô hình record đã phơi bày sẵn, hãy ưu tiên Annotation: nó chuẩn hóa và kiểm chứng các trường thông dụng. Chỉ nên dùng lời gọi này khi một key nằm ngoài mô hình
pdvkUnknown với HasScalarValue = False; tổ hợp đó nghĩa là “không có giá trị”T (subtype) và t là hai mục khác nhau
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;