PDFium Delphi Component Docs

Pásové metódy vykresľovania

Component: TPdf  ·  Unit: PDFium
Vykreslí aktuálnu stránku v správne orezaných vodorovných pásmach, zásobí kodeky volajúceho alebo zapíše výstup PNG a TIFF bez bitmapy v plnej veľkosti

Syntax

function RenderPageBanded(Width, Height, BandHeight: Integer; BandCallback: TPdfBandCallback; Rotation: TRotation = ro0; Options: TRenderOptions = []; Color: TColor = clWhite): Integer;

Width, HeightInteger. Veľkosť kompletného obrazu stránky v pixeloch, ako keby sa vykreslil na jeden kus
BandHeightInteger. Výška každého pásma v pixeloch. Posledné pásmo je kratšie, keď Height nie je jeho násobkom
BandCallbackTPdfBandCallback. 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
RotationTRotation. Zobrazovacie otočenie aplikované na stránku: ro0, ro90, ro180 alebo ro270
OptionsTRenderOptions. Príznaky vykresľovania
ColorTColor. Pozadie aplikované na každé pásmo pred vykreslením
ResultInteger. Počet skutočne vykreslených pásiem alebo 0 pri zlyhaní

RenderPageBandedToEncoder

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

RenderPageBandedToStream

function RenderPageBandedToStream(Stream: TStream; Width, Height: Integer; const StreamOptions: TPdfBandedImageStreamOptions; Rotation: TRotation = ro0; Options: TRenderOptions = []; Color: TColor = clWhite): TPdfBandedImageReport;

StreamTStream. Zapisovateľný výstup vo vlastníctve volajúceho pozicovaný na začiatok obrazu
StreamOptions.FormatpbifPng pre komprimované 8-bitové RGB PNG alebo pbifTiff pre nekomprimované klasické TIFF pásy little-endian
StreamOptions.BandHeightKladná 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.MaxOutputBytesTvrdý 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

Description

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

Example

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);

See Also

RenderPage, RenderTile, RenderPageWithMatrix, RenderPageProgressive