PDFium Delphi Component Docs

TryGetAnnotationFileAttachment metóda

Component: TPdf  ·  Unit: PDFium
Prečíta vložený súbor nesený anotáciou prílohy súboru na aktuálnej strane a vráti jeho názov, popis, MIME podtyp a dekódované bajty obsahu

Syntax

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

AnnotIndexInteger. Index anotácie na aktuálnej strane založený na nule, v rozsahu 0 .. AnnotationCount - 1. Index mimo rozsahu vyvolá EPdfError
AttachmentTPdfAnnotationAttachment. Pri úspechu: Name, Description, MimeType a dekódovaný obsah v Data (TBytes). Pred spustením volania sa vymaže na predvolenú hodnotu
MaxBytesCardinal. Horná hranica veľkosti obsahu. Predvolených 67108864 povoľuje až 64 MB; väčší obsah vyvolá EPdfError
ResultBoolean. True, keď anotácia nesie prílohu súboru a obsah bol prečítaný úplne; False, keď ju nemá alebo obsah nebolo možné dekódovať

Description

Anotácia prílohy súboru pripína vložený súbor k bodu na strane. Toto volanie otvorí anotáciu cez natívne rozhranie (FPDFAnnot_GetFileAttachment) a keď anotácia nesie prílohu, prečíta jej popisné polia a celý dekódovaný obsah do záznamu TPdfAnnotationAttachment

Výsledok je volanie v štýle Try: anotácia bez prílohy vráti False namiesto vyvolania výnimky a obsah, ktorý sa nepodarí dekódovať, tiež vráti False. Iba prekročená veľkosť obsahu sa mení na výnimku, takže limit MaxBytes môže slúžiť ako tvrdá ochrana proti vyčerpaniu pamäte zo strany nepriateľských dokumentov

Prílohy anotácií sú oddelené od stromu EmbeddedFiles na úrovni dokumentu vystaveného vlastnosťou Attachment: príloha môže sedieť na anotácii strany bez toho, aby sa objavila v tomto strome, a naopak. Na pripojenie údajov k existujúcej anotácii jedným volaním použite AddAnnotationFileAttachment

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