PDFium Delphi Component Docs

RenderPagesParallel Methode

Komponente: TPdf  ·  Unit: PDFium
Rendert mehrere Seitenanforderungen nebenläufig, während jeder Worker ein isoliertes PDFium-Dokument und einen isolierten Seiten-Handle besitzt

Syntax

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

Beschreibung

RenderPagesParallel erfasst das aktuelle Dokument einmalig in einem TPdfRandomAccessStore, entfernt die Snapshot-Verschlüsselung und hält die Quelle unveränderlich, bis jedes Worker-Dokument geschlossen ist

Eine speicher interne Erfassung wird ohne zweite Byte-Array-Kopie direkt geteilt, eine ausgelagerte Erfassung wird über eine einzige schreibgeschützte Dateiabbildung bereitgestellt, und bei einem Abbildungsfehler fällt die Methode auf FPDF_LoadCustomDocument-Blocklesevorgänge aus demselben threadsicheren Store zurück

Jeder Worker lädt eine private temporäre Kopie der aktiven PDFium-Binärdatei als eigenständiges Modul, initialisiert dieses Modul in seinem Worker-Thread und verwendet sein eigenes FPDF_DOCUMENT erneut, während er zugewiesene Seiten lädt und schließt

Modul-, Dokument-, Seiten-, Progressive-Render- und Bitmap-Zustand überschreiten niemals Worker-Grenzen, wodurch unsichere nebenläufige Aufrufe in ein einzelnes PDFium-Modul vermieden werden

PageNumbers folgt der öffentlichen 1-basierten Seitenkonvention, und das zurückgegebene Results-Array entspricht immer der Anforderungsreihenfolge, selbst wenn Worker außer der Reihe fertig werden oder eine einzelne Seite fehlschlägt

Jedes erfolgreiche Ergebnis besitzt einen Top-down-32-Bit-Pixelpuffer mit Stride = Width * 4 in BGRA-Byte-Reihenfolge, sofern reReverseByteOrder nicht RGBA anfordert

Optionen

FeldStandardBedeutung
Dpi96Zielauflösung von mehr als 0 bis 2400 DPI
MaxWorkers00 wählt bis zu vier Worker, andernfalls 1 bis 64, begrenzt durch die Anzahl der Anforderungen
MaxPixelsPerPage64 MiPixelsLehnt eine Seite ab, bevor ein überdimensionierter Ergebnispuffer alloziert wird
MaxTotalOutputBytes512 MiBBegrenzt die Summe der gehaltenen erfolgreichen Pixelpuffer
Rotationro0Wendet dieselbe Drehung auf jede Anforderung an und tauscht bei 90 oder 270 Grad die Ausgabemaße
RenderOptions[]Native PDFium-Render-Flags einschließlich Annotationen, Graustufen, Druck, Glättung und umgekehrter Byte-Reihenfolge
BackgroundColorclWhiteAnfänglicher Pixelhintergrund, bevor PDFium den Seiteninhalt zeichnet

Ergebnisse

Hinweise

Beispiel

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;

Siehe auch

RenderPage, RenderPageProgressive, RenderTile