PDFium Delphi Component Docs

RenderPageBandedToEncoder method

Component: TPdf  ·  Unit: PDFium
Merender halaman saat ini dalam pita horizontal yang ter-clip dan meneruskan setiap bitmap pita ke encoder gambar banded yang disediakan pemanggil

Syntax

function RenderPageBandedToEncoder(Width, Height, BandHeight: Integer;
  Encoder: TPdfBandedImageEncoder; Rotation: TRotation = ro0;
  Options: TRenderOptions = []; Color: TColor = clWhite): TPdfBandedImageReport;

Width, HeightInteger. Ukuran gambar halaman penuh dalam piksel, seolah-olah dirender dalam satu bagian
BandHeightInteger. Tinggi setiap pita dalam piksel. Pita terakhir lebih pendek bila Height bukan kelipatannya
EncoderTPdfBandedImageEncoder. Instance encoder milik pemanggil yang menerima stream pita
RotationTRotation. Rotasi tampilan yang diterapkan pada halaman: ro0, ro90, ro180, atau ro270
OptionsTRenderOptions. Flag rendering
ColorTColor. Warna latar yang diaplikasikan ke setiap pita sebelum rendering
ResultTPdfBandedImageReport. Jumlah pita, baris terenkode, puncak byte pita, byte output, dan flag penyelesaian

Description

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

Remarks

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

Example

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;

See Also

RenderPageBanded, RenderPageBandedToStream, RenderPage, RenderTile