function RenderPageBandedToEncoder(Width, Height, BandHeight: Integer;
Encoder: TPdfBandedImageEncoder; Rotation: TRotation = ro0;
Options: TRenderOptions = []; Color: TColor = clWhite): TPdfBandedImageReport;
| Width, Height | Integer. Viso puslapio paveikslo dydis pikseliais, tarsi jis būtų atvaizduotas vienu gabalu |
| BandHeight | Integer. Kiekvienos juostos aukštis pikseliais. Paskutinė juosta trumpesnė, kai Height nėra jos kartotinis |
| Encoder | TPdfBandedImageEncoder. Kreipėjui priklausantis koduotuvo egzempliorius, gaunantis juostų srautą |
| Rotation | TRotation. Puslapiui taikomas rodymo sukimas: ro0, ro90, ro180 arba ro270 |
| Options | TRenderOptions. Atvaizdavimo požymiai |
| Color | TColor. Fono užpildas, taikomas kiekvienai juostai prieš atvaizdavimą |
| Result | TPdfBandedImageReport. Juostų skaičiai, užkoduotos eilutės, didžiausia juostos baitų reikšmė, išvesties baitai ir užbaigtimo požymis |
Metodas varo tą patį juostinimo ciklą kaip RenderPageBanded, bet vietoje programos atgalinio iškvietimo kiekvieną ką tik atvaizduotą Width x juostos aukščio taškinę grafiką per vidinį tiltą perduoda trims kreipėjo pateikto koduotuvo virtualiems metodams: pirmiausia vyksta BeginImage(Width, Height), WriteBand(BandIndex, BandTopY, Bitmap) gauna po vieną kreipinį kiekvienai juostai iš viršaus į apačią, o EndImage(Completed) uždaro paveikslą
BandIndex skaičiuojamas nuo nulio, o BandTopY yra juostos viršaus y poslinkis viso puslapio pikseliais, ko juostelių rašytojui reikia, kad eilutės patektų į tinkamą išvesties failo vietą. Taškinė grafika priklauso atvaizdavimo ciklui ir atlaisvinama iškart grįžus WriteBand, todėl koduotuvas, kuriam reikia pikselių išsaugoti, privalo juos nukopijuoti
WriteBand grąžina True, norint tęsti, arba False, norint tvarkingai atšaukti likusias juostas. EndImage(True) kviečiamas tik tada, kai užkoduota kiekviena pageidauta eilutė; atšauktas arba nepavykęs paleidimas gauna EndImage(False), o šio nesėkmės kelio išimtys slopinamos
Grąžinamoji ataskaita neša Format = pbifCustom, atvaizduotų ir priimtų juostų skaičių BandsRendered ir BandsEncoded, priimtas eilutes RowsEncoded, didžiausią juostos taškinę grafiką kaip Width x juostos aukštį x 4 baitus PeakBandBytes, Encoder.GetBytesWritten reikšmę OutputBytes ir Completed = True būtent tada, kai RowsEncoded = Height
Didžiausia puslapio pikselių atmintis lieka vienoje juostos taškinėje grafikoje, todėl plakatai ir inžineriniai brėžiniai gali būti eksportuojami spausdinimo raiškoje niekada neatskiriant viso paskirties paveikslo
Perdavus nil koduotuvą, neteigiamus matmenis arba neteigiamą juostos aukštį, iškeliama EPdfError
Width ir Min(BandHeight, Height) sandauga turi tilpti į ketvirtadalį pasiekiamo Integer intervalo, priešingu atveju EPdfError praneša, kad juostos buferis viršija pasiekiamą dydį
Koduotuvo palikuonyje perrašykite GetBytesWritten, kad į OutputBytes patektų kodekui būdinga išvesties telemetrija; bazinė realizacija grąžina 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;