PDFium Delphi Component Docs

RenderPageBandedToEncoder metode

Komponent: TPdf  ·  Enhed: PDFium
Renderer den aktuelle side i klippede vandrette bånd og videresender hvert bånd-bitmap til en kalder-leveret banded image encoder

Syntax

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

Width, HeightInteger. Størrelsen af helsidesbilledet i pixels, som om det blev renderet i ét stykke
BandHeightInteger. Højden af hvert bånd i pixels. Det sidste bånd er kortere, når Height ikke er et multiplum af det
EncoderTPdfBandedImageEncoder. Kalder-ejet encoder-instans, der modtager bånd-streamen
RotationTRotation. Visningsrotation anvendt på siden: ro0, ro90, ro180 eller ro270
OptionsTRenderOptions. Rendering-flag
ColorTColor. Baggrundsfyld anvendt på hvert bånd før rendering
ResultTPdfBandedImageReport. Båndantal, kodede rækker, peak båndbytes, output-bytes og fuldførelsesflag

Description

Metoden driver den samme bånd-løkke som RenderPageBanded, men i stedet for et applikations-callback skubber den hver frisk renderet Width x båndhøjde-bitmap gennem en intern bro ind i encoderens tre virtuelle metoder: BeginImage(Width, Height) kører først, WriteBand(BandIndex, BandTopY, Bitmap) modtager ét kald pr. bånd oppefra og ned, og EndImage(Completed) lukker billedet

BandIndex er nulbaseret, og BandTopY er y-offset for båndets top i helsides-pixels, hvilket er det, en stribe-skriver har brug for til at placere rækkerne i en outputfil. Bitmappen tilhører render-løkken og frigives lige efter WriteBand vender tilbage, så en encoder, der skal beholde pixels, skal kopiere dem

WriteBand returnerer True for at fortsætte eller False for at annullere de resterende bånd rent. EndImage(True) kaldes kun, når hver anmodede række blev kodet; en annulleret eller fejlet kørsel modtager EndImage(False), med exceptions fra den fejlsti undertrykt

Den returnerede rapport bærer Format = pbifCustom, antallet af renderede og accepterede bånd i BandsRendered og BandsEncoded, accepterede rækker i RowsEncoded, den største bånd-bitmap som Width x båndhøjde x 4 bytes i PeakBandBytes, værdien af Encoder.GetBytesWritten i OutputBytes og Completed = True netop når RowsEncoded = Height

Peak sidepixel-lagring forbliver på én bånd-bitmap, så plakater og tekniske tegninger kan eksporteres ved printopløsning uden nogensinde at allokere hele destinationsbilledet

Remarks

En nil-encoder, ikke-positive dimensioner eller en ikke-positiv båndhøjde udløser EPdfError

Produktet af Width og Min(BandHeight, Height) skal holde sig inden for en fjerdedel af det adresserbare Integer-område, ellers rapporterer EPdfError, at båndbufferen overstiger den adresserbare størrelse

Override GetBytesWritten i encoder-nedkomsten for at rapportere encoder-specifik output-telemetri ind i OutputBytes; basisimplementeringen 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