function GetAnnotationDictionaryValue(AnnotIndex: Integer; const Key: WString): TPdfDictionaryValue;
| AnnotIndex | Integer. Indeks anotasi berbasis nol pada halaman saat ini, dalam rentang 0 .. AnnotationCount - 1. Indeks di luar rentang memunculkan EPdfError |
| Key | WString. Nama entri dictionary yang akan dibaca, dikodekan UTF-8 sebelum pemanggilan native |
| Result | TPdfDictionaryValue. Kind membawa tipe nilai native; nilai string, name, dan number didekode ke StringValue / NumberValue dengan HasScalarValue = True |
Setiap anotasi ditopang oleh sebuah dictionary PDF, dan model record komponen hanya memetakan entri-entri umum. Panggilan ini menjangkau dictionary mentah dan membaca satu kunci, sehingga entri yang didefinisikan aplikasi (status review, id pengelompokan, ekstensi vendor) menjadi terlihat tanpa harus menelusuri object graph
Jenis nilai dikueri secara native dan didekode ke TPdfDictionaryValueKind: pdvkUnknown, pdvkBoolean, pdvkNumber, pdvkString, pdvkName, pdvkArray, pdvkDictionary, pdvkStream, pdvkNull atau pdvkReference. Hanya jenis skalar yang diambil: string dan name didekode ke StringValue, number ke NumberValue (dibaca pada presisi tunggal oleh API native), dan HasScalarValue menandai pengambilan yang berhasil. Nilai tanpa muatan skalar — boolean, array, dictionary bersarang, stream — dilaporkan lewat Kind saja
Untuk kunci yang sudah dipaparkan model record, utamakan Annotation: metode itu menormalisasi dan memvalidasi field umum. Gunakan panggilan ini hanya ketika sebuah kunci berada di luar model
pdvkUnknown dengan HasScalarValue = False; kombinasi itu berarti “tidak ada nilai”T (subtype) dan t adalah entri yang berbeda
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;