PDFium Delphi Component Docs

RenderPagesParallel metode

Komponent: TPdf  ·  Enhed: PDFium
Renderer flere siderequests samtidigt, mens hver worker ejer et isoleret PDFium-dokument og side-handle

Syntax

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

Description

RenderPagesParallel fanger det aktuelle dokument én gang i en TPdfRandomAccessStore, fjerner snapshot-kryptering og holder kilden immutable, indtil alle worker-dokumenter lukker

En in-memory-indfangning deles direkte uden en ekstra byte-array-kopi, en spilled indfangning eksponeres gennem én read-only file mapping, og mapping-fejl falder tilbage til FPDF_LoadCustomDocument-bloklæsninger fra den samme thread-safe butik

Hver worker indlæser en privat midlertidig kopi af den aktive PDFium-binær som et uafhængigt modul, initialiserer det modul på sin worker-tråd og genbruger sit eget FPDF_DOCUMENT, mens tildelte sider indlæses og lukkes

Modul-, dokument-, side-, progressive-render- og bitmap-tilstand krydser aldrig worker-grænser, hvilket undgår usikre samtidige kald ind i ét PDFium-modul

PageNumbers bruger den offentlige én-baserede sidekonvention, og det returnerede Results-array matcher altid request-rækkefølgen, også når workers fuldfører i uorden, eller en enkelt side fejler

Hvert successfuldt resultat ejer en top-down 32-bit pixelbuffer med Stride = Width * 4 i BGRA-byte-rækkefølge, medmindre reReverseByteOrder anmoder om RGBA

Options

FieldDefaultMeaning
Dpi96Mål-opløsning fra over 0 op til 2400 DPI
MaxWorkers00 vælger op til fire workers, ellers 1 til 64 afgrænset af antallet af requests
MaxPixelsPerPage64 MiPixelsAfviser en side, før en overdimensioneret resultatbuffer allokeres
MaxTotalOutputBytes512 MiBAfgrænser summen af gemte successfulde pixelbuffers
Rotationro0Anvender samme rotation på hver request og bytter output-dimensioner ved 90 eller 270 grader
RenderOptions[]Native PDFium render-flag inklusive annotationer, grayscale, udskrivning, udjævning og omvendt byte-rækkefølge
BackgroundColorclWhiteIndledende pixelbaggrund, før PDFium maler sideindholdet

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