PDFium Component Docs

RenderPageBandedToEncoder methode

Component: TPdf  ·  Unit: PDFium
Rendert de huidige pagina in geclipte horizontale banden en geeft elke bandbitmap door aan een door de aanroeper geleverde banded image-encoder

Syntax

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

Width, HeightInteger. Grootte van de volledige pagina-afbeelding in pixels, alsof die in één keer wordt gerenderd
BandHeightInteger. Hoogte van elke band in pixels. De laatste band is korter wanneer Height er geen veelvoud van is
EncoderTPdfBandedImageEncoder. Encoder-instantie in eigendom van de aanroeper die de bandstroom ontvangt
RotationTRotation. Weergaverotatie die op de pagina wordt toegepast: ro0, ro90, ro180 of ro270
OptionsTRenderOptions. Rendering-vlaggen
ColorTColor. Achtergrondvulling die vóór het renderen op elke band wordt toegepast
ResultTPdfBandedImageReport. Bandaantallen, geëncodeerde rijen, piekbandbytes, uitvoerbytes en voltooiingsvlag

Description

De methode stuurt dezelfde bandenlus aan als RenderPageBanded, maar duwt in plaats van een application callback elke vers gerenderde Width x bandhoogte-bitmap via een interne bridge naar de drie virtuele methoden van de door de aanroeper geleverde encoder: BeginImage(Width, Height) draait eerst, WriteBand(BandIndex, BandTopY, Bitmap) ontvangt per band één aanroep van boven naar beneden en EndImage(Completed) sluit de afbeelding af

BandIndex is op nul gebaseerd en BandTopY is de y-offset van de bandtop in full-page pixels, precies wat een stripschrijver nodig heeft om de rijen in een uitvoerbestand te plaatsen. De bitmap is eigendom van de renderlus en wordt direct vrijgegeven nadat WriteBand terugkeert, dus een encoder die de pixels wil bewaren moet ze kopiëren

WriteBand geeft True terug om door te gaan of False om de resterende banden netjes af te breken. EndImage(True) wordt alleen aangeroepen wanneer elke gevraagde rij is geëncodeerd; een afgebroken of mislukte run krijgt EndImage(False), waarbij excepties uit dat faalpad worden onderdrukt

Het teruggegeven rapport bevat Format = pbifCustom, het aantal gerenderde en geaccepteerde banden in BandsRendered en BandsEncoded, geaccepteerde rijen in RowsEncoded, de grootste bandbitmap als Width x bandhoogte x 4 bytes in PeakBandBytes, de waarde van Encoder.GetBytesWritten in OutputBytes en Completed = True precies wanneer RowsEncoded = Height

De piekopslag aan paginapixels blijft op één bandbitmap, dus posters en technische tekeningen kunnen op afdrukresolutie worden geëxporteerd zonder ooit de volledige doelafbeelding toe te wijzen

Remarks

Het doorgeven van een nil-encoder, niet-positieve afmetingen of een niet-positieve bandhoogte verhoogt EPdfError

Het product van Width en Min(BandHeight, Height) moet binnen één kwart van het adresseerbare Integer-bereik blijven, anders meldt EPdfError dat de bandbuffer de adresseerbare grootte overschrijdt

Overschrijf GetBytesWritten in de encoder-nakomeling om encoder-specifieke uitvoertelemetrie in OutputBytes te rapporteren; de basale implementatie geeft 0 terug

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