PDFium Delphi Component Docs

RenderPagesParallel الطريقة

المكوّن: TPdf  ·  الوحدة: PDFium
تعرض عدة طلبات صفحات بالتزامن بينما يمتلك كل عامل مستند PDFium ومقبض صفحة معزولين

الصياغة

function RenderPagesParallel(
  const PageNumbers : array of Integer;
  const Options : TPdfParallelRenderOptions;
  const CancellationToken: IPdfCancellationToken = nil): TPdfParallelRenderReport;

الوصف

يلتقط RenderPagesParallel المستند الحالي مرة واحدة في TPdfRandomAccessStore، ويزيل تعمية اللقطة، ويُبقي المصدر غير قابل للتغيير حتى تُغلق كل مستندات العمال

تُشارك الالتقطة في الذاكرة مباشرة دون نسخة مصفوفة بايتات ثانية، وتُكشف الالتقطة المفرَّغة إلى القرص عبر تعيين ملف واحد للقراءة فقط، ويعود فشل التعيين إلى قراءات كتل FPDF_LoadCustomDocument من المخزن نفسه الآمن خيطيًا

يحمِّل كل عامل نسخة مؤقتة خاصة من ثنائية PDFium النشطة بوصفها وحدة مستقلة، ويهيئ تلك الوحدة على خيط عامله، ويعيد استخدام FPDF_DOCUMENT الخاص به أثناء تحميل الصفحات الموكَلة إليه وإغلاقها

لا تعبر حالة الوحدة ولا المستند ولا الصفحة ولا العرض التدريجي ولا الصورة النقطية حدود العامل أبدًا، تفاديًا للاستدعاءات المتزامنة غير الآمنة على وحدة PDFium واحدة

يتبع PageNumbers اصطلاح الصفحات العام الذي يبدأ من الواحد، وتطابق مصفوفة Results المُعادة ترتيب الطلب دائمًا حتى عندما ينتهي العمال بترتيب مخالف أو تفشل صفحة مفردة

تمتلك كل نتيجة ناجحة مخزن بكسلات 32 بت من أعلى إلى أسفل مع Stride = Width * 4، بترتيب بايتات BGRA ما لم يطلب reReverseByteOrder الترتيب RGBA

Options

الحقلالافتراضيالمعنى
Dpi96الدقة الهدف من أكثر من 0 حتى 2400 DPI
MaxWorkers00 يختار حتى أربعة عمال، وإلا فمن 1 حتى 64 بحدٍّ هو عدد الطلبات
MaxPixelsPerPage64 MiPixelsيرفض الصفحة قبل حجز مخزن نتيجة بالغ الحجم
MaxTotalOutputBytes512 MiBيحدّ مجموع مخازن البكسلات الناجحة المحتفظ بها
Rotationro0يطبق الدوران نفسه على كل طلب ويبدّل أبعاد الإخراج عند 90 أو 270 درجة
RenderOptions[]أعلام عرض PDFium الأصلية بما فيها التعليقات وتدرج الرمادي والطباعة والتنعيم وترتيب البايتات المعكوس
BackgroundColorclWhiteخلفية البكسلات الابتدائية قبل أن يرسم PDFium محتوى الصفحة

النتائج

ملاحظات

مثال

uses FPdfAsync;

var
  Options: TPdfParallelRenderOptions;
  Report: TPdfParallelRenderReport;
  I: Integer;
begin
  Options := TPdfParallelRenderOptions.Default;
  Options.Dpi := 150;
  Options.MaxWorkers := 4;
  Options.RenderOptions := [reAnnotations];

  Report := Pdf1.RenderPagesParallel([1, 3, 5, 7], Options, CancelToken);
  for I := 0 to High(Report.Results) do
    if Report.Results[I].Status = pprsSucceeded then
      ConsumeTopDownPixels(Report.Results[I]);
end;

انظر أيضًا

RenderPage, RenderPageProgressive, RenderTile