function RenderPageBandedToEncoder(Width, Height, BandHeight: Integer;
Encoder: TPdfBandedImageEncoder; Rotation: TRotation = ro0;
Options: TRenderOptions = []; Color: TColor = clWhite): TPdfBandedImageReport;
| Width, Height | Integer. Ukuran gambar halaman penuh dalam piksel, seolah-olah dirender dalam satu bagian |
| BandHeight | Integer. Tinggi setiap pita dalam piksel. Pita terakhir lebih pendek bila Height bukan kelipatannya |
| Encoder | TPdfBandedImageEncoder. Instance encoder milik pemanggil yang menerima stream pita |
| Rotation | TRotation. Rotasi tampilan yang diterapkan pada halaman: ro0, ro90, ro180, atau ro270 |
| Options | TRenderOptions. Flag rendering |
| Color | TColor. Warna latar yang diaplikasikan ke setiap pita sebelum rendering |
| Result | TPdfBandedImageReport. Jumlah pita, baris terenkode, puncak byte pita, byte output, dan flag penyelesaian |
Method ini menjalankan loop pembitaan yang sama dengan RenderPageBanded, tetapi alih-alih callback aplikasi, ia mendorong setiap bitmap Width x band-height yang baru dirender melalui bridge internal ke tiga method virtual milik encoder yang disediakan pemanggil: BeginImage(Width, Height) berjalan lebih dulu, WriteBand(BandIndex, BandTopY, Bitmap) menerima satu panggilan per pita dari atas ke bawah, dan EndImage(Completed) menutup gambar
BandIndex berbasis nol dan BandTopY adalah offset-y dari puncak pita dalam piksel level halaman penuh, yang dibutuhkan strip writer untuk menempatkan baris di file output. Bitmap adalah milik loop render dan dibebaskan tepat setelah WriteBand kembali, sehingga encoder yang perlu menyimpan piksel harus menyalinnya
WriteBand mengembalikan True untuk melanjutkan atau False untuk membatalkan pita tersisa dengan bersih. EndImage(True) hanya dipanggil ketika setiap baris yang diminta berhasil dienkode; run yang dibatalkan atau gagal menerima EndImage(False), dengan exception dari jalur kegagalan tersebut ditekan
Laporan yang dikembalikan membawa Format = pbifCustom, jumlah pita yang dirender dan diterima di BandsRendered dan BandsEncoded, baris yang diterima di RowsEncoded, bitmap pita terbesar sebagai Width x tinggi pita x 4 byte di PeakBandBytes, nilai Encoder.GetBytesWritten di OutputBytes, dan Completed = True tepat ketika RowsEncoded = Height
Penyimpanan piksel halaman pada puncaknya tetap sebesar satu bitmap pita, sehingga poster dan gambar teknik dapat diekspor pada resolusi cetak tanpa pernah mengalokasikan gambar tujuan yang utuh
Meneruskan encoder nil, dimensi non-positif, atau tinggi pita non-positif memunculkan EPdfError
Hasil kali Width dan Min(BandHeight, Height) harus tetap dalam seperempat rentang Integer yang dapat dialamatkan, jika tidak EPdfError melaporkan bahwa buffer pita melampaui ukuran yang dapat dialamatkan
Override GetBytesWritten pada turunan encoder untuk melaporkan telemetri output spesifik encoder ke OutputBytes; implementasi dasar mengembalikan 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;