PDFium Delphi Component Docs

TryGetAnnotationFileAttachment متد

کامپوننت: TPdf  ·  واحد: 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 تا ۶۴ MB اجازه می‌دهد؛ باری بزرگ‌تر EPdfError برمی‌انگیزد
ResultBoolean. True وقتی حاشیه‌نویسی پیوست فایلی داشته باشد و بار کامل خوانده شده باشد؛ False وقتی پیوستی ندارد یا بار رمزگشایی نشد

Description

یک حاشیه‌نویسی پیوست-فایلی فایل تعبیه‌شده‌ای را به نقطه‌ای از صفحه سنجاق می‌کند. این فراخوان حاشیه‌نویسی را از طریق رابط نیتیو (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