PDFium Delphi Component Docs

RenderPageBandedToEncoder Método

Componente: TPdf  ·  Unidad: PDFium
Renderiza la página actual en bandas horizontales recortadas y entrega el mapa de bits de cada banda a un codificador de imágenes por bandas suministrado por el llamador

Syntax

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

Width, HeightInteger. Tamaño de la imagen de página completa en píxeles, como si se renderizara de una sola pieza
BandHeightInteger. Altura de cada banda en píxeles. La última banda es más corta cuando Height no es múltiplo de ella
EncoderTPdfBandedImageEncoder. Instancia de codificador propiedad del llamador que recibe el flujo de bandas
RotationTRotation. Rotación de visualización aplicada a la página: ro0, ro90, ro180 o ro270
OptionsTRenderOptions. Marcas de renderizado
ColorTColor. Relleno de fondo aplicado a cada banda antes de renderizar
ResultTPdfBandedImageReport. Recuentos de bandas, filas codificadas, bytes máximos de banda, bytes de salida y marca de finalización

Description

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

Remarks

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

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