function TryGetAnnotationFileAttachment(AnnotIndex: Integer; out Attachment: TPdfAnnotationAttachment; MaxBytes: Cardinal = 67108864): Boolean;
| AnnotIndex | Integer. 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 |
| Attachment | TPdfAnnotationAttachment. 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 |
| MaxBytes | Cardinal. 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 |
| Result | Boolean. 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ó |
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
MaxBytes értékét az alkalmazáshoz illőre
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;