function RenderPageBandedToEncoder(Width, Height, BandHeight: Integer;
Encoder: TPdfBandedImageEncoder; Rotation: TRotation = ro0;
Options: TRenderOptions = []; Color: TColor = clWhite): TPdfBandedImageReport;
| Width, Height | Integer. Grootte van de volledige pagina-afbeelding in pixels, alsof die in één keer wordt gerenderd |
| BandHeight | Integer. Hoogte van elke band in pixels. De laatste band is korter wanneer Height er geen veelvoud van is |
| Encoder | TPdfBandedImageEncoder. Encoder-instantie in eigendom van de aanroeper die de bandstroom ontvangt |
| Rotation | TRotation. Weergaverotatie die op de pagina wordt toegepast: ro0, ro90, ro180 of ro270 |
| Options | TRenderOptions. Rendering-vlaggen |
| Color | TColor. Achtergrondvulling die vóór het renderen op elke band wordt toegepast |
| Result | TPdfBandedImageReport. Bandaantallen, geëncodeerde rijen, piekbandbytes, uitvoerbytes en voltooiingsvlag |
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
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
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;