function GetAnnotationDictionaryValue(AnnotIndex: Integer; const Key: WString): TPdfDictionaryValue;
| AnnotIndex | Integer. Nollbaserat index för annoteringen på den aktuella sidan, i intervallet 0 .. AnnotationCount - 1. Ett index utanför intervallet utlöser en EPdfError. |
| Key | WString. Namnet på ordboksposten som ska läsas, UTF-8-kodad före det nativa anropet. |
| Result | TPdfDictionaryValue. Kind bär den nativa värdetypen; sträng-, namn- och talvärden avkodas till StringValue / NumberValue med HasScalarValue = True. |
Varje annotering backas av en PDF-ordlista, och komponentens postmodell mappar bara de vanliga posterna. Det här anropet går rakt in i råordlistan och läser en enda nyckel, så applikationsdefinierade poster (en granskningsstatus, ett grupperings-id, ett leverantörstillägg) blir synliga utan att behöva vandra genom objektgrafen
Värdetypen frågas nativt och avkodas till en TPdfDictionaryValueKind: pdvkUnknown, pdvkBoolean, pdvkNumber, pdvkString, pdvkName, pdvkArray, pdvkDictionary, pdvkStream, pdvkNull eller pdvkReference. Bara de skalära typerna hämtas: strängar och namn avkodas till StringValue, tal till NumberValue (lästa med enkel precision av det nativa API:et), och HasScalarValue markerar en lyckad hämtning. Värden utan skalärnyttolast — booleska värden, arrayer, nästlade ordböcker, strömmar — rapporteras bara via Kind
För nycklar som postmodellen redan exponerar, använd hellre Annotation: den normaliserar och validerar de vanliga fälten. Gå till det här anropet först när en nyckel ligger utanför modellen
pdvkUnknown med HasScalarValue = False; den kombinationen betyder “inget värde”.T (subtypen) och t är olika poster.
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;