PDFium Delphi Component Docs

Metoda TryGetAnnotationFileAttachment

Component: TPdf  ·  Unit: PDFium
Citește fișierul încorporat transportat de o adnotare de atașament de fișier aflată pe pagina curentă, returnând numele acestuia, descrierea, subtipul MIME și octeții decodați ai sarcinii utile

Syntax

function TryGetAnnotationFileAttachment(AnnotIndex: Integer; out Attachment: TPdfAnnotationAttachment; MaxBytes: Cardinal = 67108864): Boolean;

AnnotIndexInteger. 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
AttachmentTPdfAnnotationAttachment. În caz de succes: Name, Description, MimeType și sarcina utilă decodată în Data (TBytes). Este golit la valoarea implicită înainte de rularea apelului
MaxBytesCardinal. Limita superioară a dimensiunii sarcinii utile. Valoarea implicită 67108864 permite până la 64 MB; o sarcină utilă mai mare ridică un EPdfError
ResultBoolean. 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ă

Description

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

Remarks

Example

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;

See Also

AddAnnotationFileAttachment, Annotation, AnnotationCount, Attachment