PDFium Delphi Component Docs

RenderPagesParallel Método

Componente: TPdf  ·  Unidad: PDFium
Renderiza varias solicitudes de página concurrentemente mientras cada trabajador posee un documento y un manejador de página PDFium aislados

Syntax

function RenderPagesParallel(
  const PageNumbers : array of Integer;
  const Options : TPdfParallelRenderOptions;
  const CancellationToken: IPdfCancellationToken = nil): TPdfParallelRenderReport;

Description

RenderPagesParallel captura el documento actual una vez en un TPdfRandomAccessStore, elimina el cifrado de la instantánea y mantiene la fuente inmutable hasta que todos los documentos de trabajo se cierren

Una captura en memoria se comparte directamente sin una segunda copia de la matriz de bytes, una captura volcada a disco se expone mediante una única asignación de archivo de solo lectura, y si la asignación falla se recurre a lecturas de bloque FPDF_LoadCustomDocument desde el mismo almacén seguro para hilos

Cada trabajador carga una copia temporal privada del binario PDFium activo como módulo independiente, inicializa ese módulo en su hilo de trabajo y reutiliza su propio FPDF_DOCUMENT mientras carga y cierra las páginas asignadas

El estado del módulo, del documento, de la página, del renderizado progresivo y del mapa de bits nunca cruza los límites de los trabajadores, lo que evita llamadas concurrentes no seguras a un único módulo PDFium

PageNumbers usa la convención pública de páginas basada en uno y la matriz Results devuelta siempre coincide con el orden de la solicitud, incluso cuando los trabajadores terminan desordenados o una página individual falla

Cada resultado exitoso posee un búfer de píxeles de 32 bits de arriba abajo con Stride = Width * 4, usando el orden de bytes BGRA salvo que reReverseByteOrder solicite RGBA

Options

CampoPredeterminadoSignificado
Dpi96Resolución objetivo desde más de 0 hasta 2400 DPI
MaxWorkers00 selecciona hasta cuatro trabajadores; de lo contrario, de 1 a 64 acotado por el número de solicitudes
MaxPixelsPerPage64 MiPixelsRechaza una página antes de asignar un búfer de resultado de tamaño excesivo
MaxTotalOutputBytes512 MiBAcota la suma de los búferes de píxeles exitosos retenidos
Rotationro0Aplica la misma rotación a cada solicitud e intercambia las dimensiones de salida para 90 o 270 grados
RenderOptions[]Marcas de renderizado nativas de PDFium que incluyen anotaciones, escala de grises, impresión, suavizado y orden de bytes inverso
BackgroundColorclWhiteFondo inicial de píxeles antes de que PDFium pinte el contenido de la página

Results

Remarks

Example

uses FPdfAsync;

var
  Options: TPdfParallelRenderOptions;
  Report: TPdfParallelRenderReport;
  I: Integer;
begin
  Options := TPdfParallelRenderOptions.Default;
  Options.Dpi := 150;
  Options.MaxWorkers := 4;
  Options.RenderOptions := [reAnnotations];

  Report := Pdf1.RenderPagesParallel([1, 3, 5, 7], Options, CancelToken);
  for I := 0 to High(Report.Results) do
    if Report.Results[I].Status = pprsSucceeded then
      ConsumeTopDownPixels(Report.Results[I]);
end;

See Also

RenderPage, RenderPageProgressive, RenderTile