PDFium Delphi Component Docs

RenderPageBandedToEncoder-metodi

Komponentti: TPdf  ·  Yksikkö: PDFium
Renderöi nykyisen sivun leikatuissa vaakakaistoissa ja välittää jokaisen kaistabittikartan kutsujan toimittamalle kaistakuvaenkoodekille

Syntax

function RenderPageBandedToEncoder(Width, Height, BandHeight: Integer;
  Encoder: TPdfBandedImageEncoder; Rotation: TRotation = ro0;
  Options: TRenderOptions = []; Color: TColor = clWhite): TPdfBandedImageReport;

Width, HeightInteger. Koko sivukuvan mitat pikseleinä, ikään kuin se olisi renderöity yhtenä kappaleena
BandHeightInteger. Kunkin kaistan korkeus pikseleinä. Viimeinen kaista on matalampi, kun Height ei ole sen monikerta
EncoderTPdfBandedImageEncoder. Kutsujan omistama koodekiesiintymä, joka vastaanottaa kaistavirran
RotationTRotation. Sivulle sovellettava näyttökierto: ro0, ro90, ro180 tai ro270
OptionsTRenderOptions. Renderöintiliput
ColorTColor. Kunkin kaistan taustatäyttö ennen renderöintiä
ResultTPdfBandedImageReport. Kaistamäärät, koodatut rivit, kaistatavujen huippu, tulostetut tavut ja valmistumislippu

Description

Metodi ajaa saman kaistatointisilmukan kuin RenderPageBanded, mutta sovelluspalauteen sijaan se työntää jokaisen tuoreesti renderöidyn Width x kaistakorkeus -bittikartan sisäisen sillan kautta kutsujan toimittaman koodekin kolmeen virtuaalimenetelmään: BeginImage(Width, Height) suoritetaan ensin, WriteBand(BandIndex, BandTopY, Bitmap) vastaanottaa yhden kutsun per kaista ylhäältä alas, ja EndImage(Completed) sulkee kuvan

BandIndex on nollapohjainen ja BandTopY on kaistan yläreunan y-offset koko sivun pikseleinä, minkä kaistakirjoittaja tarvitsee sijoittaakseen rivit tulostetiedostoon. Bittikartta kuuluu renderöintisilmukalle ja vapautetaan heti WriteBand-kutsun paluun jälkeen, joten koodekin, joka tarvitsee pikselit itselleen, on kopioitava ne

WriteBand palauttaa arvon True jatkaakseen tai arvon False peruuttaakseen jäljellä olevat kaistat siististi. EndImage(True) kutsutaan vain, kun jokainen pyydetty rivi koodattiin; peruutettu tai epäonnistunut ajo saa EndImage(False)-kutsun, ja kyseisen epäonnistumispolun poikkeukset hiljennetään

Palautettu raportti sisältää arvon Format = pbifCustom, renderöityjen ja hyväksyttyjen kaistojen määrät kentissä BandsRendered ja BandsEncoded, hyväksytyt rivit kentässä RowsEncoded, suurimman kaistabittikartan arvona Width x kaistakorkeus x 4 tavua kentässä PeakBandBytes, Encoder.GetBytesWritten-arvon kentässä OutputBytes sekä arvon Completed = True täsmälleen silloin, kun RowsEncoded = Height

Sivun pikselitallennuksen huippu pysyy yhdessä kaistabittikartassa, joten julisteet ja tekniset piirustukset voidaan viedä ulos tulostustarkkuudella koskaan kohdistamatta koko kohdekuvaa

Remarks

Nil-koodekin, ei-positiivisten mittojen tai ei-positiivisen kaistakorkeuden antaminen nostaa EPdfError-poikkeuksen

Width- ja Min(BandHeight, Height)-arvojen tulon on pysyttävä alle neljänneksessä osoitettavissa olevasta Integer-alueesta, muuten EPdfError raportoi, että kaistapuskuri ylittää osoitettavissa olevan koon

Ohita GetBytesWritten koodekin aliluokassa raportoidaksesi koodekikohtaisia tulosteen telemetriatietoja kenttään OutputBytes; perustoteutus palauttaa arvon 0

Example

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;

See Also

RenderPageBanded, RenderPageBandedToStream, RenderPage, RenderTile