function RenderPageBandedToEncoder(Width, Height, BandHeight: Integer;
Encoder: TPdfBandedImageEncoder; Rotation: TRotation = ro0;
Options: TRenderOptions = []; Color: TColor = clWhite): TPdfBandedImageReport;
| Width, Height | عدد صحيح. حجم صورة الصفحة الكاملة بالبكسلات، كأنها عُرضت قطعة واحدة |
| BandHeight | عدد صحيح. ارتفاع كل شريط بالبكسلات؛ يكون الشريط الأخير أقصر عندما لا يكون Height مضاعفًا له |
| Encoder | TPdfBandedImageEncoder. نسخة مرمِّز مملوكة للمستدعي تستقبل تيار الأشرطة |
| Rotation | TRotation. دوران العرض المطبق على الصفحة: ro0 أو ro90 أو ro180 أو ro270 |
| Options | TRenderOptions. أعلام العرض الرسومي |
| Color | TColor. تعبئة الخلفية المطبقة على كل شريط قبل العرض |
| Result | TPdfBandedImageReport. عدّادات الأشرطة والصفوف المرمَّزة وذروة بايتات الشريط وبايتات الإخراج وعلم الإكمال |
تقود الطريقة حلقة التقسيم إلى أشرطة نفسها التي تقودها RenderPageBanded، لكنها بدل استدعاء التطبيق الراجع تدفع كل صورة نقطية Width × ارتفاع شريط معرَضة حديثًا عبر جسر داخلي إلى الطرق الافتراضية الثلاث للمرمِّز الذي يوفره المستدعي: يعمل BeginImage(Width, Height) أولًا، ويستقبل WriteBand(BandIndex, BandTopY, Bitmap) استدعاءً واحدًا لكل شريط من أعلى إلى أسفل، ويغلق EndImage(Completed) الصورة
يبدأ BandIndex من الصفر، و BandTopY هو إزاحة y لأعلى الشريط بوحدات بكسلات الصفحة الكاملة، وهي ما يحتاجه كاتب الأشرطة لوضع الصفوف في ملف الإخراج؛ والصورة النقطية ملك لحلقة العرض وتُحرَّر مباشرة بعد عودة WriteBand، فالمرمِّز الذي يحتاج الإبقاء على البكسلات عليه نسخها
تعيد WriteBand قيمة True للمتابعة أو False لإلغاء الأشرطة المتبقية بنظافة؛ ولا يُستدعى EndImage(True) إلا عندما تكون كل صف مطلوب قد رُمِّز؛ ويستلم التشغيل الملغى أو الفاشل EndImage(False) مع كبت استثناءات مسار الفشل ذاك
يحمل التقرير المُعاد Format = pbifCustom، وعدد الأشرطة المعرَضة والمقبولة في BandsRendered و BandsEncoded، والصفوف المقبولة في RowsEncoded، وأكبر صورة شريط نقطية بقياس Width × ارتفاع شريط × 4 بايتات في PeakBandBytes، وقيمة Encoder.GetBytesWritten في OutputBytes، و Completed = True تمامًا عندما RowsEncoded = Height
يبقى تخزين بكسلات الصفحة في الذروة عند صورة شريط نقطية واحدة، فيمكن تصدير الملصقات والرسومات الهندسية بدقة الطباعة دون حجز صورة الوجهة الكاملة أبدًا
يمرير مرمِّز nil أو أبعاد غير موجبة أو ارتفاع شريط غير موجب يرفع EPdfError
يجب أن يبقى حاصل ضرب Width في Min(BandHeight, Height) ضمن ربع المدى القابل للعنونة من نوع Integer، وإلا يُبلِّغ EPdfError عن تجاوز مخزن الشريط الحجم القابل للعنونة
تجاوز GetBytesWritten في السليل من المرمِّز يُبلِّغ قياسات إخراج خاصة بالمرمِّز في OutputBytes؛ ويعيد التنفيذ الأساسي 0
type
TRawStripEncoder = class(TPdfBandedImageEncoder)
public
procedure BeginImage(Width, Height: Integer); override;
function WriteBand(BandIndex, BandTopY: Integer;
Bitmap: TBitmap): Boolean; override;
procedure EndImage(Completed: Boolean); override;
end;
Encoder := TRawStripEncoder.Create;
try
Report := Pdf.RenderPageBandedToEncoder(4960, 7016, 512, Encoder);
LogBandedExport(Report.BandsEncoded, Report.PeakBandBytes);
finally
Encoder.Free;
end;