PDFium Delphi Component Docs

TryGetAnnotationFileAttachment method

Component: TPdf  ·  Unit: PDFium
Membaca file tersemat yang dibawa anotasi file-attachment pada halaman saat ini, mengembalikan namanya, deskripsi, subtipenya, dan byte payload hasil dekode

Syntax

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

AnnotIndexInteger. Indeks anotasi berbasis nol pada halaman saat ini, dalam rentang 0 .. AnnotationCount - 1. Indeks di luar rentang memunculkan EPdfError
AttachmentTPdfAnnotationAttachment. Saat berhasil: Name, Description, MimeType, dan payload hasil dekode di Data (TBytes). Dikosongkan ke nilai default sebelum panggilan berjalan
MaxBytesCardinal. Batas atas ukuran payload. Nilai default 67108864 mengizinkan hingga 64 MB; payload yang lebih besar memunculkan EPdfError
ResultBoolean. True ketika anotasi membawa file attachment dan payload terbaca lengkap; False ketika anotasi tidak memilikinya atau payload tidak berhasil didekode

Description

Anotasi file-attachment menempelkan file tersemat ke satu titik pada halaman. Panggilan ini membuka anotasi melalui antarmuka native (FPDFAnnot_GetFileAttachment) dan, ketika anotasi membawa attachment, membaca field deskriptifnya beserta payload hasil dekode lengkap ke dalam record TPdfAnnotationAttachment

Hasilnya adalah panggilan berpola Try: anotasi tanpa attachment mengembalikan False alih-alih memunculkan exception, dan payload yang gagal didekode juga mengembalikan False. Hanya payload berukuran berlebih yang berubah menjadi exception, sehingga batas MaxBytes dapat berfungsi sebagai penjaga keras terhadap kehabisan memori akibat dokumen yang berbahaya

Attachment anotasi terpisah dari pohon EmbeddedFiles tingkat dokumen yang diekspos oleh Attachment: sebuah attachment bisa berada pada anotasi halaman tanpa muncul di pohon itu, dan sebaliknya. Gunakan AddAnnotationFileAttachment untuk melampirkan data ke anotasi yang ada dalam satu panggilan

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