PDFium Delphi Component Docs

מתודת TryGetAnnotationFileAttachment

Component: TPdf  ·  Unit: PDFium
קוראת את הקובץ המוטמע שנושאת הערת צירוף קובץ בעמוד הנוכחי, ומחזירה את השם, התיאור, תת-הסוג MIME ואת בתי המטען המפוענחים

Syntax

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

AnnotIndexInteger. אינדקס מבוסס-אפס של ההערה בעמוד הנוכחי, בטווח 0 .. AnnotationCount - 1. אינדקס מחוץ לטווח מעלה EPdfError.
AttachmentTPdfAnnotationAttachment. בהצלחה: Name, Description, MimeType והמטען המפוענח ב-Data (TBytes). מתרוקן לערכי ברירת המחדל שלו לפני שהקריאה רצה.
MaxBytesCardinal. חסם עליון לגודל המטען. ברירת המחדל 67108864 מתירה עד 64 MB; מטען גדול יותר מעלה EPdfError.
ResultBoolean. True כאשר ההערה נושאת צירוף קובץ והמטען נקרא במלואו; False כאשר אין לה צירוף כזה או שהמטען לא הצליח להיפענח.

Description

הערת צירוף קובץ מצמידה קובץ מוטמע לנקודה בעמוד. קריאה זו פותחת את ההערה דרך הממשק ה-native (FPDFAnnot_GetFileAttachment) וכאשר ההערה נושאת צירוף, קוראת את שדות התיאור שלה ואת המטען המפוענח המלא אל תוך רשומת TPdfAnnotationAttachment

התוצאה היא קריאה בתבנית Try: הערה שאינה נושאת צירוף מחזירה False במקום להעלות חריגה, וגם מטען שאינו מצליח להיפענח מחזיר False. רק מטען חורג הופך לחריגה, ולכן מגבלת ה-MaxBytes יכולה לשמש שומר נוקשה נגד דלדול זיכרון ממסמכים עוינים

צירופי ההערות נפרדים מעץ ה-EmbeddedFiles ברמת המסמך שחושף Attachment: צירוף יכול לשבת על הערת עמוד מבלי להופיע בעץ הזה, ולהפך. השתמשו ב-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