function RenderPageBandedToEncoder(Width, Height, BandHeight: Integer;
Encoder: TPdfBandedImageEncoder; Rotation: TRotation = ro0;
Options: TRenderOptions = []; Color: TColor = clWhite): TPdfBandedImageReport;
| Width, Height | Integer. Velikost celého obrázku stránky v pixelech, jako by byl vykreslen na jeden kus |
| BandHeight | Integer. Výška každého pásu v pixelech. Když Height není jeho násobek, je poslední pás kratší |
| Encoder | TPdfBandedImageEncoder. Instance kodeku ve vlastnictví volajícího, která proud pásů přijímá |
| Rotation | TRotation. Otočení zobrazení aplikované na stránku: ro0, ro90, ro180 nebo ro270 |
| Options | TRenderOptions. Příznaky vykreslování |
| Color | TColor. Výplň pozadí nanesená na každý pás před vykreslením |
| Result | TPdfBandedImageReport. Počty pásů, zakódované řádky, vrcholné bajty pásu, výstupní bajty a příznak dokončení |
Metoda řídí stejnou pásovou smyčku jako RenderPageBanded, ale místo aplikačního zpětného volání protlačuje každou čerstvě vykreslenou bitmapu Width x výška pásu interním mostem do tří virtuálních metod kodeku dodaného volajícím: BeginImage(Width, Height) běží první, WriteBand(BandIndex, BandTopY, Bitmap) dostane po jednom volání pro každý pás shora dolů a EndImage(Completed) obrázek uzavře
BandIndex se čísluje od nuly a BandTopY je y-offset horního okraje pásu v pixelech celé stránky, což je přesně to, co zapisovač pruhů potřebuje k umístění řádků ve výstupním souboru. Bitmapa patří vykreslovací smyčce a uvolní se hned poté, co WriteBand vrátí, takže kodek, který si pixely chce ponechat, je musí zkopírovat
WriteBand vrací True pro pokračování nebo False pro čisté zrušení zbývajících pásů. EndImage(True) se volá jen tehdy, když se zakódoval každý požadovaný řádek; zrušený nebo neúspěšný běh dostane EndImage(False), přičemž výjimky z této chybové cesty se potlačí
Vrácený přehled nese Format = pbifCustom, počet vykreslených a přijatých pásů v BandsRendered a BandsEncoded, přijaté řádky v RowsEncoded, největší bitmapu pásu jako Width x výška pásu x 4 bytes v PeakBandBytes, hodnotu Encoder.GetBytesWritten v OutputBytes a Completed = True přesně tehdy, když RowsEncoded = Height
Vrcholné úložiště pixelů stránky zůstává na jedné bitmapě pásu, takže plakáty a technické výkresy lze exportovat v tiskovém rozlišení, aniž by se kdykoli alokoval celý cílový obrázek
Předání nil kodeku, nekladných rozměrů nebo nekladné výšky pásu vyvolá EPdfError
Součin Width a Min(BandHeight, Height) musí zůstat v jedné čtvrtině adresovatelného rozsahu Integer, jinak EPdfError nahlásí, že buffer pásu překračuje adresovatelnou velikost
GetBytesWritten v potomku kodeku přepište, aby se telemetrie výstupu specifická pro kodek dostala do OutputBytes; základní implementace vrací 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;