PDFium Component Docs

RenderPageBandedToEncoder-metode

Component: TPdf  ·  Unit: PDFium
Renderer den gjeldende siden i beskårede vannrette band og sender hver band-bitmap videre til en kodek for bandbilder som er levert av kalleren

Syntax

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

Width, HeightInteger. Størrelsen på hele sidebildet i piksler, som om det ble rendret i én del
BandHeightInteger. Høyden på hvert band i piksler. Det siste bandet er kortere når Height ikke er et multiplum av det
EncoderTPdfBandedImageEncoder. Kodekinstans som eies av kalleren og mottar bandstrømmen
RotationTRotation. Visningsrotasjon anvendt på siden: ro0, ro90, ro180 eller ro270
OptionsTRenderOptions. Renderingsflagg
ColorTColor. Bakgrunnsfyll som legges på hvert band før rendering
ResultTPdfBandedImageReport. Bandtellere, kodede rader, topp-bandbytes, utdatabytes og fullføringsflagg

Description

Metoden driver samme bandsløyfe som RenderPageBanded, men i stedet for en applikasjons-callback presser den hver ferskt rendret Width x bandhøyde-bitmap gjennom en intern bro og inn i de tre virtuelle metodene til kodeken som er levert av kalleren: BeginImage(Width, Height) kjører først, WriteBand(BandIndex, BandTopY, Bitmap) mottar ett kall per band ovenfra og ned, og EndImage(Completed) lukker bildet

BandIndex er nullbasert, og BandTopY er y-forskyvningen til bandets topp i fullsidepiksler, som er det en stripeskriver trenger for å plassere radene i en utdatafil. Bitmapen tilhører renderingsløkken og frigjøres rett etter at WriteBand returnerer, så en kodek som trenger å beholde pikslene må kopiere dem

WriteBand returnerer True for å fortsette eller False for å avbryte de gjenværende bandene rent. EndImage(True) kalles bare når hver forespurt rad ble kodet; en avbrutt eller mislykket kjøring mottar EndImage(False), med unntak fra denne sviktsstien undertrykt

Den returnerte rapporten bærer Format = pbifCustom, antall band rendret og akseptert i BandsRendered og BandsEncoded, aksepterte rader i RowsEncoded, den største band-bitmapen som Width x bandhøyde x 4 bytes i PeakBandBytes, verdien av Encoder.GetBytesWritten i OutputBytes, og Completed = True nøyaktig når RowsEncoded = Height

Topp lagring av sidepiksler forblir ved én band-bitmap, så plakater og tekniske tegninger kan eksporteres i utskriftsoppløsning uten noen gang å allokere hele målbildet

Remarks

En nil-kodek, ikke-positive dimensjoner eller en ikke-positiv bandhøyde utløser EPdfError

Produktet av Width og Min(BandHeight, Height) må holdes innenfor en fjerdedel av den adresserbare Integer-rekkevidden, ellers rapporterer EPdfError at bandbufferen overskrider den adresserbare størrelsen

Overstyr GetBytesWritten i kodekens etterkommerklasse for å rapportere kodekspesifikk utdatatelemetri inn i OutputBytes; basisimplementasjonen returnerer 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