PDFium Component Docs

TryGetAnnotationFileAttachment Metoda

Component: TPdf  ·  Unit: PDFium
Odczytuje plik osadzony niesiony przez adnotację załącznika plikowego na bieżącej stronie, zwracając jego nazwę, opis, podtyp MIME i zdekodowane bajty danych

Syntax

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

AnnotIndexInteger. Indeks adnotacji na bieżącej stronie liczony od zera, w zakresie 0 .. AnnotationCount - 1. Indeks poza zakresem zgłasza EPdfError
AttachmentTPdfAnnotationAttachment. Po sukcesie: Name, Description, MimeType i zdekodowane dane w Data (TBytes). Przed wykonaniem wywołania czyszczony do wartości domyślnych
MaxBytesCardinal. Górna granica rozmiaru danych. Domyślne 67108864 pozwala na do 64 MB; większe dane zgłaszają EPdfError
ResultBoolean. True, gdy adnotacja niesie załącznik plikowy i dane zostały odczytane w całości; False, gdy załącznika nie ma albo nie udało się zdekodować danych

Description

Adnotacja załącznika plikowego przypina plik osadzony do punktu na stronie. To wywołanie otwiera adnotację przez natywny interfejs (FPDFAnnot_GetFileAttachment) i, gdy adnotacja niesie załącznik, czyta jego pola opisowe oraz pełne zdekodowane dane do rekordu TPdfAnnotationAttachment

To wywołanie we wzorcu Try: adnotacja bez załącznika zwraca False zamiast zgłaszać wyjątek, a danych, których nie da się zdekodować, również skutkują False. Tylko zbyt duże dane zamieniają się w wyjątek, więc limit MaxBytes może działać jako twarda ochrona przed wyczerpaniem pamięci przez wrogie dokumenty

Załączniki adnotacji są niezależne od drzewa EmbeddedFiles poziomu dokumentu ujawnianego przez Attachment: załącznik może siedzieć na adnotacji strony, nie pojawiając się w tym drzewie, i odwrotnie. Użyj AddAnnotationFileAttachment, aby jednym wywołaniem dołączyć dane do istniejącej adnotacji

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