function RenderPageBandedToEncoder(Width, Height, BandHeight: Integer;
Encoder: TPdfBandedImageEncoder; Rotation: TRotation = ro0;
Options: TRenderOptions = []; Color: TColor = clWhite): TPdfBandedImageReport;
| Width, Height | Integer. Tamaño de la imagen de página completa en píxeles, como si se renderizara de una sola pieza |
| BandHeight | Integer. Altura de cada banda en píxeles. La última banda es más corta cuando Height no es múltiplo de ella |
| Encoder | TPdfBandedImageEncoder. Instancia de codificador propiedad del llamador que recibe el flujo de bandas |
| Rotation | TRotation. Rotación de visualización aplicada a la página: ro0, ro90, ro180 o ro270 |
| Options | TRenderOptions. Marcas de renderizado |
| Color | TColor. Relleno de fondo aplicado a cada banda antes de renderizar |
| Result | TPdfBandedImageReport. Recuentos de bandas, filas codificadas, bytes máximos de banda, bytes de salida y marca de finalización |
El método impulsa el mismo bucle de bandas que RenderPageBanded, pero en lugar de una devolución de llamada de la aplicación empuja cada mapa de bits Width x alto de banda recién renderizado a través de un puente interno hacia los tres métodos virtuales del codificador suministrado por el llamador: BeginImage(Width, Height) se ejecuta primero, WriteBand(BandIndex, BandTopY, Bitmap) recibe una llamada por banda de arriba abajo y EndImage(Completed) cierra la imagen
BandIndex es de base cero y BandTopY es el desfase y del extremo superior de la banda en píxeles de página completa, que es lo que un escritor de tiras necesita para colocar las filas en un archivo de salida. El mapa de bits pertenece al bucle de renderizado y se libera justo después de que WriteBand retorne, de modo que un codificador que necesite conservar los píxeles debe copiarlos
WriteBand devuelve True para continuar o False para cancelar limpiamente las bandas restantes. EndImage(True) solo se llama cuando se codificó cada fila solicitada; una ejecución cancelada o fallida recibe EndImage(False), con las excepciones de esa ruta de fallo suprimidas
El informe devuelto lleva Format = pbifCustom, el número de bandas renderizadas y aceptadas en BandsRendered y BandsEncoded, las filas aceptadas en RowsEncoded, el mayor mapa de bits de banda como Width x alto de banda x 4 bytes en PeakBandBytes, el valor de Encoder.GetBytesWritten en OutputBytes, y Completed = True exactamente cuando RowsEncoded = Height
El almacenamiento máximo de píxeles de la página se mantiene en un mapa de bits de una banda, de modo que pósteres y planos de ingeniería pueden exportarse a resolución de impresión sin asignar nunca la imagen de destino completa
Pasar un codificador nil, dimensiones no positivas o una altura de banda no positiva lanza un EPdfError
El producto de Width y Min(BandHeight, Height) debe mantenerse dentro de un cuarto del rango direccionable de Integer; de lo contrario, EPdfError informa de que el búfer de banda supera el tamaño direccionable
Sobrescriba GetBytesWritten en el descendiente del codificador para reportar telemetría de salida específica del codificador en OutputBytes; la implementación base devuelve 0
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;