function TryGetAnnotationFileAttachment(AnnotIndex: Integer; out Attachment: TPdfAnnotationAttachment; MaxBytes: Cardinal = 67108864): Boolean;
| AnnotIndex | Integer. אינדקס מבוסס-אפס של ההערה בעמוד הנוכחי, בטווח 0 .. AnnotationCount - 1. אינדקס מחוץ לטווח מעלה EPdfError. |
| Attachment | TPdfAnnotationAttachment. בהצלחה: Name, Description, MimeType והמטען המפוענח ב-Data (TBytes). מתרוקן לערכי ברירת המחדל שלו לפני שהקריאה רצה. |
| MaxBytes | Cardinal. חסם עליון לגודל המטען. ברירת המחדל 67108864 מתירה עד 64 MB; מטען גדול יותר מעלה EPdfError. |
| Result | Boolean. True כאשר ההערה נושאת צירוף קובץ והמטען נקרא במלואו; False כאשר אין לה צירוף כזה או שהמטען לא הצליח להיפענח. |
הערת צירוף קובץ מצמידה קובץ מוטמע לנקודה בעמוד. קריאה זו פותחת את ההערה דרך הממשק ה-native (FPDFAnnot_GetFileAttachment) וכאשר ההערה נושאת צירוף, קוראת את שדות התיאור שלה ואת המטען המפוענח המלא אל תוך רשומת TPdfAnnotationAttachment
התוצאה היא קריאה בתבנית Try: הערה שאינה נושאת צירוף מחזירה False במקום להעלות חריגה, וגם מטען שאינו מצליח להיפענח מחזיר False. רק מטען חורג הופך לחריגה, ולכן מגבלת ה-MaxBytes יכולה לשמש שומר נוקשה נגד דלדול זיכרון ממסמכים עוינים
צירופי ההערות נפרדים מעץ ה-EmbeddedFiles ברמת המסמך שחושף Attachment: צירוף יכול לשבת על הערת עמוד מבלי להופיע בעץ הזה, ולהפך. השתמשו ב-AddAnnotationFileAttachment כדי לצרף נתונים להערה קיימת בקריאה אחת
MaxBytes לערך המתאים ליישום לפני קריאה על מסמכים שאינם מהימנים.
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;