function RenderPageBandedToEncoder(Width, Height, BandHeight: Integer;
Encoder: TPdfBandedImageEncoder; Rotation: TRotation = ro0;
Options: TRenderOptions = []; Color: TColor = clWhite): TPdfBandedImageReport;
| Width, Height | Integer. Størrelsen af helsidesbilledet i pixels, som om det blev renderet i ét stykke |
| BandHeight | Integer. Højden af hvert bånd i pixels. Det sidste bånd er kortere, når Height ikke er et multiplum af det |
| Encoder | TPdfBandedImageEncoder. Kalder-ejet encoder-instans, der modtager bånd-streamen |
| Rotation | TRotation. Visningsrotation anvendt på siden: ro0, ro90, ro180 eller ro270 |
| Options | TRenderOptions. Rendering-flag |
| Color | TColor. Baggrundsfyld anvendt på hvert bånd før rendering |
| Result | TPdfBandedImageReport. Båndantal, kodede rækker, peak båndbytes, output-bytes og fuldførelsesflag |
Metoden driver den samme bånd-løkke som RenderPageBanded, men i stedet for et applikations-callback skubber den hver frisk renderet Width x båndhøjde-bitmap gennem en intern bro ind i encoderens tre virtuelle metoder: BeginImage(Width, Height) kører først, WriteBand(BandIndex, BandTopY, Bitmap) modtager ét kald pr. bånd oppefra og ned, og EndImage(Completed) lukker billedet
BandIndex er nulbaseret, og BandTopY er y-offset for båndets top i helsides-pixels, hvilket er det, en stribe-skriver har brug for til at placere rækkerne i en outputfil. Bitmappen tilhører render-løkken og frigives lige efter WriteBand vender tilbage, så en encoder, der skal beholde pixels, skal kopiere dem
WriteBand returnerer True for at fortsætte eller False for at annullere de resterende bånd rent. EndImage(True) kaldes kun, når hver anmodede række blev kodet; en annulleret eller fejlet kørsel modtager EndImage(False), med exceptions fra den fejlsti undertrykt
Den returnerede rapport bærer Format = pbifCustom, antallet af renderede og accepterede bånd i BandsRendered og BandsEncoded, accepterede rækker i RowsEncoded, den største bånd-bitmap som Width x båndhøjde x 4 bytes i PeakBandBytes, værdien af Encoder.GetBytesWritten i OutputBytes og Completed = True netop når RowsEncoded = Height
Peak sidepixel-lagring forbliver på én bånd-bitmap, så plakater og tekniske tegninger kan eksporteres ved printopløsning uden nogensinde at allokere hele destinationsbilledet
En nil-encoder, ikke-positive dimensioner eller en ikke-positiv båndhøjde udløser EPdfError
Produktet af Width og Min(BandHeight, Height) skal holde sig inden for en fjerdedel af det adresserbare Integer-område, ellers rapporterer EPdfError, at båndbufferen overstiger den adresserbare størrelse
Override GetBytesWritten i encoder-nedkomsten for at rapportere encoder-specifik output-telemetri ind i OutputBytes; basisimplementeringen returnerer 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;