PDFium Delphi Component Docs

RenderPageBandedToEncoder metoda

Component: TPdf  ·  Unit: PDFium
Izriše trenutno stran v obrezanih vodoravnih pasovih in vsako bitno sliko pasu posreduje kodirniku pasovnih slik, ki ga poda klicatelj

Syntax

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

Width, HeightInteger. Velikost slike cele strani v pikslih, kot da bi bila izrisana na en kos
BandHeightInteger. Višina vsakega pasu v pikslih. Zadnji pas je krajši, kadar Height ni njegov večkratnik
EncoderTPdfBandedImageEncoder. Primerek kodirnika v lasti klicatelja, ki prejema tok pasov
RotationTRotation. Zasuk zaslona, uporabljen na strani: ro0, ro90, ro180 ali ro270
OptionsTRenderOptions. Zastavice izrisovanja
ColorTColor. Polnilo ozadja, nanešeno na vsak pas pred izrisovanjem
ResultTPdfBandedImageReport. Števila pasov, kodirane vrstice, vrhunske bajte pasu, izhodne bajte in zastavico zaključka

Description

Metoda poganja isto zanko pasov kot RenderPageBanded, namesto aplikacijskega povratnega klica pa vsako sveže izrisano bitno sliko Width x višina pasu potisne prek notranjega mostu v tri virtualne metode kodirnika, ki ga poda klicatelj: BeginImage(Width, Height) se izvede prva, WriteBand(BandIndex, BandTopY, Bitmap) prejme en klic na pas od zgoraj navzdol, EndImage(Completed) pa zapre sliko

BandIndex je številčen od 0, BandTopY pa je odmik y vrha pasu v pikslih cele strani, kar pisec stripov potrebuje, da vrstice umesti v izhodno datoteko. Bitna slika pripada zanki izrisa in se sprosti takoj po vrnitvi WriteBand, zato jo mora kodirnik, ki želi obdržati piksle, prekopirati

WriteBand vrne True za nadaljevanje ali False za čist preklic preostalih pasov. EndImage(True) se pokliče samo, kadar je bila kodirana vsaka zahtevana vrstica; preklican ali spodletel tek prejme EndImage(False), izjeme s te poti napake pa so utišane

Vrnjeno poročilo nosi Format = pbifCustom, število izrisanih in sprejetih pasov v BandsRendered in BandsEncoded, sprejete vrstice v RowsEncoded, največjo bitno sliko pasu kot Width x višina pasu x 4 bajte v PeakBandBytes, vrednost Encoder.GetBytesWritten v OutputBytes ter Completed = True točno takrat, kadar je RowsEncoded = Height

Vrhunec shranjevanja pikslov strani ostane pri eni bitni sliki pasu, tako da so plakati in tehnične risbe izvozljivi pri tiskalni ločljivosti brez kdajkolišnje dodelitve slike celotnega cilja

Remarks

Podajanje kodirnika nil, nepozitivnih mer ali nepozitivne višine pasu sproži EPdfError

Proizvod Width in Min(BandHeight, Height) mora ostati znotraj četrtine naslovljivega obsega Integer, sicer EPdfError poroča, da pasovni medpomnilnik presega naslovljivo velikost

GetBytesWritten preglasite v nasledniku kodirnika, da poročate telemetrijo izhoda, specifično za kodirnik, v OutputBytes; osnovna implementacija vrne 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