PDFium Delphi Component Docs

TryGetAnnotationFileAttachment metódus

Komponens: TPdf  ·  Egység: PDFium
Beolvassa az aktuális oldal egy fájlmelléklet-jegyzete által hordozott beágyazott fájlt, és visszaadja annak nevét, leírását, MIME altípusát és dekódolt hasznos adatbájtit

Syntax

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

AnnotIndexInteger. A jegyzet nulla-alapú indexe az aktuális oldalon, a 0 .. AnnotationCount - 1 tartományban. Tartományon kívüli index EPdfError kivételt vált ki
AttachmentTPdfAnnotationAttachment. Siker esetén: Name, Description, MimeType és a dekódolt hasznos adat a Data mezőben (TBytes). A hívás futása előtt az alapértelmezett értékére törlődik
MaxBytesCardinal. A hasznos adat méretének felső korlátja. Az alapértelmezett 67108864 legfeljebb 64 MB-ot enged; ennél nagyobb hasznos adat EPdfError kivételt vált ki
ResultBoolean. True, ha a jegyzet fájlmellékletet hordoz, és a hasznos adat teljesen beolvasásra került; False, ha egyet sem hordoz, vagy a hasznos adat nem dekódolható

Description

A fájlmelléklet-jegyzet egy beágyazott fájlt rögzít az oldal egy pontjához. Ez a hívás a natív interfészen keresztül nyitja meg a jegyzetet (FPDFAnnot_GetFileAttachment), és ha a jegyzet mellékletet hordoz, beolvassa annak leíró mezőit és a teljes dekódolt hasznos adatot egy TPdfAnnotationAttachment rekordba

Az eredmény egy Try-mintájú hívás: a melléklet nélküli jegyzet kivétel dobása helyett False-t ad vissza, és a dekódolásban megbukó hasznos adat is False-ot ad vissza. Csak a túlméretezett hasznos adat válik kivétellé, így a MaxBytes korlát kemény védelemként szolgálhat az ellenséges dokumentumok okozta memóriakimerülés ellen

A jegyzetmellékletek elkülönülnek az Attachment által feltárt dokumentumszintű EmbeddedFiles fától: egy melléklet ott lehet egy oldaljegyzeten anélkül, hogy a fában megjelenne, és fordítva. Adat meglévő jegyzethez fűzéséhez egyetlen hívásban használja az AddAnnotationFileAttachment metódust

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