function RenderPageBanded(Width, Height, BandHeight: Integer; BandCallback: TPdfBandCallback; Rotation: TRotation = ro0; Options: TRenderOptions = []; Color: TColor = clWhite): Integer;
| Width, Height | Integer. Veľkosť kompletného obrazu stránky v pixeloch, ako keby sa vykreslil na jeden kus |
| BandHeight | Integer. Výška každého pásma v pixeloch. Posledné pásmo je kratšie, keď Height nie je jeho násobkom |
| BandCallback | TPdfBandCallback. Metóda volaná raz na pásmo ako function(BandIndex, BandTopY: Integer; Bitmap: TBitmap): Boolean of object. Vráťte False na skoré zrušenie vykresľovania |
| Rotation | TRotation. Zobrazovacie otočenie aplikované na stránku: ro0, ro90, ro180 alebo ro270 |
| Options | TRenderOptions. Príznaky vykresľovania |
| Color | TColor. Pozadie aplikované na každé pásmo pred vykreslením |
| Result | Integer. Počet skutočne vykreslených pásiem alebo 0 pri zlyhaní |
function RenderPageBandedToEncoder(Width, Height, BandHeight: Integer; Encoder: TPdfBandedImageEncoder; Rotation: TRotation = ro0; Options: TRenderOptions = []; Color: TColor = clWhite): TPdfBandedImageReport;
Volajúci vlastní Encoder a implementuje BeginImage, WriteBand a EndImage. Pásma prichádzajú zhora nadol s indexmi od nuly a súradnicami BandTopY v rámci celej stránky
WriteBand vráti True pre pokračovanie alebo False pre čisté zastavenie. Bitmapa je platná len počas volania. GetBytesWritten môže vrátiť telemetriu výstupu špecifickú pre encoder
Výsledok hlási vykreslené a akceptované pásma v BandsRendered a BandsEncoded, zakódované riadky v RowsEncoded, špičkové bajty BGRA pásma v PeakBandBytes, výstupné bajty a to, či sa dokončil každý požadovaný riadok
function RenderPageBandedToStream(Stream: TStream; Width, Height: Integer; const StreamOptions: TPdfBandedImageStreamOptions; Rotation: TRotation = ro0; Options: TRenderOptions = []; Color: TColor = clWhite): TPdfBandedImageReport;
| Stream | TStream. Zapisovateľný výstup vo vlastníctve volajúceho pozicovaný na začiatok obrazu |
| StreamOptions.Format | pbifPng pre komprimované 8-bitové RGB PNG alebo pbifTiff pre nekomprimované klasické TIFF pásy little-endian |
| StreamOptions.BandHeight | Kladná výška pásma a TIFF pásu; predvolené je 256 riadkov |
| StreamOptions.CompressionLevel | Úroveň PNG zlib od 0 po 9; predvolená je 6 a TIFF ju ignoruje |
| StreamOptions.MaxOutputBytes | Tvrdý strop zakódovaných bajtov; nula znamená bez limitu |
Oba vstavané encodery zapisujú iba dopredu a nepresúvajú kurzor prúdu volajúceho. PNG komprimuje každý scanline priamo do sekvenčných chunkov IDAT, zatiaľ čo TIFF zapisuje jedno RGB pásmo TIFF na vykreslené pásmo a svoj directory priloží za pixely
Špičkové úložisko pixelov stránky je jedna bitmapa BGRA Width x BandHeight namiesto Width x Height. Report sprístupňuje namerané špičkové bajty pásma, takže exportéri môžu pamäťovú politiku vynucovať a auditovať
Použite TPdfBandedImageStreamOptions.Default(pbifPng) alebo Default(pbifTiff) pred prepísaním jednotlivých limitov
Plagáty, mapy a technické výkresy môžu presiahnuť pamäť, ktorú by bitmapa celej stránky potrebovala pri tlačovej rozlíšivosti. Pásovanie drží špičkovú pamäť na jednom pásme: každé pásmo sa vykreslí do čerstvej bitmapy Width x BandHeight a odovzdá callbacku
Callback dostane index pásma od nuly a BandTopY, y-ofset horného okraja pásma v pixeloch celej stránky, čo presne potrebuje zapisovač na umiestnenie pásu vo výstupnom súbore. Každá bitmapa si drží kompletnú device transformáciu stránky a je orezaná na tento rozsah súradníc. Bitmapa patrí renderovacej slučke a po návrate callbacku sa uvoľní, takže callback, ktorý potrebuje pixely ponechať, ich musí skopírovať
Vrátenie False z callbacku zastaví slučku; návratová hodnota potom počíta pásma vykreslené pred zrušením
function TForm1.WriteBand(BandIndex, BandTopY: Integer;
Bitmap: TBitmap): Boolean;
begin
Bitmap.SaveToFile(Format('band%d.bmp', [BandIndex]));
Result := True;
end;
Pdf.RenderPageBanded(4960, 7016, 512, WriteBand);
StreamOptions := TPdfBandedImageStreamOptions.Default(pbifPng);
StreamOptions.BandHeight := 256;
StreamOptions.MaxOutputBytes := 256 * 1024 * 1024;
Report := Pdf.RenderPageBandedToStream(OutputStream, 4960, 7016,
StreamOptions);