function RenderPageBandedToEncoder(Width, Height, BandHeight: Integer;
Encoder: TPdfBandedImageEncoder; Rotation: TRotation = ro0;
Options: TRenderOptions = []; Color: TColor = clWhite): TPdfBandedImageReport;
| Width, Height | Integer. Tam sayfa görüntüsünün piksel cinsinden boyutu; sayfa tek parça hâlinde işlenmiş gibi |
| BandHeight | Integer. Her bandın piksel cinsinden yüksekliği. Height bunun katı değilse son bant daha kısa olur |
| Encoder | TPdfBandedImageEncoder. Bant akışını alan, çağıranın mülkiyetindeki kodlayıcı örneği |
| Rotation | TRotation. Sayfaya uygulanan görüntü döndürmesi: ro0, ro90, ro180 veya ro270 |
| Options | TRenderOptions. İşleme bayrakları |
| Color | TColor. İşlemeden önce her banda uygulanan arka plan dolgusu |
| Result | TPdfBandedImageReport. Bant sayıları, kodlanan satırlar, en yüksek bant baytları, çıktı baytları ve tamamlanma bayrağı |
Yöntem, RenderPageBanded ile aynı bantlama döngüsünü sürer; ancak bir uygulama geri çağrısı yerine, her taze işlenmiş Width x bant yüksekliği bitmap'ini içsel bir köprü üzerinden çağıranın sağladığı kodlayıcının üç sanal yöntemine iletir: önce BeginImage(Width, Height) çalışır, WriteBand(BandIndex, BandTopY, Bitmap) yukarıdan aşağıya bant başına bir çağrı alır ve EndImage(Completed) görüntüyü kapatır
BandIndex sıfır tabanlıdır ve BandTopY, tam sayfa piksellerinde bant üstünün y ofsetidir; bir şerit yazarının satırları çıktı dosyasına yerleştirmesi için gereken bilgi budur. Bitmap işleme döngüsüne aittir ve WriteBand döndükten hemen sonra serbest bırakılır; bu yüzden pikselleri saklaması gereken bir kodlayıcının onları kopyalaması gerekir
WriteBand, devam etmek için True ya da kalan bantları temizce iptal etmek için False döndürür. EndImage(True) yalnızca istenen her satır kodlandığında çağrılır; iptal edilmiş ya da başarısız olmuş bir çalıştırma, o hata yolundan gelen istisnalar bastırılmış biçimde EndImage(False) alır
Döndürülen rapor; Format = pbifCustom değerini, işlenen ve kabul edilen bant sayılarını BandsRendered ve BandsEncoded içinde, kabul edilen satırları RowsEncoded içinde, en büyük bant bitmap'ini Width x bant yüksekliği x 4 bayt olarak PeakBandBytes içinde, Encoder.GetBytesWritten değerini OutputBytes içinde taşır ve Completed = True değerini tam olarak RowsEncoded = Height olduğunda taşır
En yüksek sayfa piksel depolaması tek bant bitmap'inde kalır; böylece posterler ve mühendislik çizimleri, tam hedef görüntüyü hiç ayırmadan baskı çözünürlüğünde dışa aktarılabilir
Nil bir kodlayıcı, pozitif olmayan boyutlar ya da pozitif olmayan bir bant yüksekliği geçmek EPdfError fırlatır
Width ile Min(BandHeight, Height) çarpımı, adreslenebilir Integer aralığının dörtte biri içinde kalmalıdır; aksi halde EPdfError bant tamponunun adreslenebilir boyutu aştığını raporlar
Kodlayıcıya özgü çıktı telemetrisini OutputBytes içine raporlamak için kodlayıcı alt sınıfında GetBytesWritten yöntemini geçersiz kılın; temel uygulama 0 döndürür
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;