function TryGetAnnotationFileAttachment(AnnotIndex: Integer; out Attachment: TPdfAnnotationAttachment; MaxBytes: Cardinal = 67108864): Boolean;
| AnnotIndex | Integer. Indicele de la zero al adnotării de pe pagina curentă, în intervalul 0 .. AnnotationCount - 1. Un indice aflat în afara intervalului ridică un EPdfError |
| Attachment | TPdfAnnotationAttachment. În caz de succes: Name, Description, MimeType și sarcina utilă decodată în Data (TBytes). Este golit la valoarea implicită înainte de rularea apelului |
| MaxBytes | Cardinal. Limita superioară a dimensiunii sarcinii utile. Valoarea implicită 67108864 permite până la 64 MB; o sarcină utilă mai mare ridică un EPdfError |
| Result | Boolean. True când adnotarea poartă un atașament de fișier și sarcina utilă a fost citită complet; False când nu există unul sau când sarcina utilă nu a putut fi decodată |
O adnotare de atașament de fișier fixează un fișier încorporat într-un punct al unei pagini. Acest apel deschide adnotarea prin interfața nativă (FPDFAnnot_GetFileAttachment) și, când adnotarea poartă un atașament, îi citește câmpurile descriptive și întreaga sarcină utilă decodată într-o înregistrare TPdfAnnotationAttachment
Rezultatul este un apel de tip Try: o adnotare fără atașament returnează False în loc să ridice o excepție, iar o sarcină utilă care nu se poate decoda returnează, de asemenea, False. Doar o sarcină utilă prea mare se transformă în excepție, astfel încât limita MaxBytes poate acționa ca o gardă fermă împotriva epuizării memoriei provocate de documente ostile
Atașamentele de adnotare sunt separate de arborele EmbeddedFiles la nivel de document expus prin Attachment: un atașament poate fi plasat pe o adnotare de pagină fără să apară în acel arbore, și invers. Folosiți AddAnnotationFileAttachment pentru a atașa date unei adnotări existente într-un singur apel
MaxBytes o valoare potrivită aplicației înainte de a apela pe documente de neîncredere
var
I: Integer;
Attachment: TPdfAnnotationAttachment;
begin
for I := 0 to Pdf1.AnnotationCount - 1 do
if (Pdf1.Annotation[I].Subtype = anFileAttachment) and
Pdf1.TryGetAnnotationFileAttachment(I, Attachment) then
begin
TFile.WriteAllBytes('extracted\' + Attachment.Name, Attachment.Data);
Memo1.Lines.Add(Format('%s (%s, %d bytes)',
[Attachment.Name, Attachment.MimeType, Length(Attachment.Data)]));
end;
end;