function RenderPageBandedToStream(Stream: TStream; Width,
Height: Integer; const StreamOptions: TPdfBandedImageStreamOptions;
Rotation: TRotation = ro0; Options: TRenderOptions = [];
Color: TColor = clWhite): TPdfBandedImageReport;
| Stream | TStream. เอาต์พุตแบบเขียนได้ที่ผู้เรียกเป็นเจ้าของ วางตำแหน่งไว้ตรงจุดที่ภาพจะเริ่ม |
| StreamOptions.Format | pbifPng สำหรับ PNG 8-bit RGB แบบบีบอัด หรือ pbifTiff สำหรับ TIFF strip แบบคลาสสิก little-endian ไม่บีบอัด |
| StreamOptions.BandHeight | ความสูงของ band และ TIFF strip ต้องเป็นบวก ค่า default คือ 256 แถว |
| StreamOptions.CompressionLevel | ระดับ zlib ของ PNG ตั้งแต่ 0 ถึง 9 default คือ 6 และ TIFF ไม่สนใจค่านี้ |
| StreamOptions.MaxOutputBytes | เพดานไบต์ของเอาต์พุตแบบบังคับเด็ดขาด ศูนย์หมายถึงไม่จำกัด |
| Rotation | TRotation. การหมุนมุมมองที่ใช้กับหน้า |
| Options | TRenderOptions. flag ของการเรนเดอร์ |
| Color | TColor. สีพื้นหลังที่เติมให้แต่ละ band ก่อนเรนเดอร์ |
| Result | TPdfBandedImageReport. จำนวน band แถวที่ encode ไบต์สูงสุดต่อ band ไบต์เอาต์พุต flag บอกความสำเร็จ และรูปแบบที่เลือก |
เมธอดนี้ห่อ stream ด้วย built-in encoder ที่ระบุ คือ TPdfPngBandedImageEncoder หรือ TPdfTiffBandedImageEncoder แล้วขับ pipeline แบบ band ชุดเดียวกับ RenderPageBandedToEncoder รายงานที่ได้จะระบุ Format ที่เลือกไว้แทน pbifCustom
encoder ฝั่ง PNG บีบอัดแต่ละ scanline ลง IDAT chunk เรียงต่อกันโดยตรง ส่วน encoder ฝั่ง TIFF เขียน RGB strip หนึ่งชุดต่อหนึ่ง render band แล้วเขียน image file directory ต่อท้ายข้อมูลพิกเซล ทั้งสองตัวเขียนไปข้างหน้าอย่างเดียวและไม่ seek stream ของผู้เรียกเด็ดขาด
หน่วยเก็บพิกเซลของหน้าที่จุดสูงสุดคือ bitmap BGRA ขนาด Width x BandHeight หนึ่งชิ้น ไม่ใช่ Width x Height รายงานเปิดเผย PeakBandBytes ที่วัดได้เพื่อให้ผู้ส่งออกตรวจสอบนโยบายหน่วยความจำได้ และ OutputBytes สะท้อนจำนวนที่เขียนลง stream จริง
เริ่มจาก TPdfBandedImageStreamOptions.Default(pbifPng) หรือ Default(pbifTiff) ก่อนไปแก้ค่าจำกัดรายตัว โดย default คือ BandHeight = 256, CompressionLevel = 6 และ MaxOutputBytes = 0
stream เป็น nil, BandHeight ไม่เป็นบวก หรือ MaxOutputBytes ติดลบ จะทำให้เกิด EPdfError และ pbifCustom ถูกปฏิเสธเพราะต้องเป็นรูปแบบ PNG หรือ TIFF แบบ built-in
เมื่อภาพที่ encode แล้วจะล้น MaxOutputBytes การเขียนจะ raise EPdfError พร้อมข้อความ Encoded image exceeds the output byte budget
สำหรับรูปแบบ container อื่นหรือ external codec ให้ใช้ RenderPageBandedToEncoder คู่กับ descendant ของ TPdfBandedImageEncoder ที่เขียนเอง
StreamOptions := TPdfBandedImageStreamOptions.Default(pbifTiff);
StreamOptions.BandHeight := 256;
StreamOptions.MaxOutputBytes := Int64(512) * 1024 * 1024;
Report := Pdf.RenderPageBandedToStream(OutputStream, 4960, 7016,
StreamOptions);
if not Report.Completed then
RaiseBandedExportIncomplete;