function RenderPagesParallel(
const PageNumbers : array of Integer;
const Options : TPdfParallelRenderOptions;
const CancellationToken: IPdfCancellationToken = nil): TPdfParallelRenderReport;
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
| Field | Default | Meaning |
|---|---|---|
Dpi | 96 | Mål-opløsning fra over 0 op til 2400 DPI |
MaxWorkers | 0 | 0 vælger op til fire workers, ellers 1 til 64 afgrænset af antallet af requests |
MaxPixelsPerPage | 64 MiPixels | Afviser en side, før en overdimensioneret resultatbuffer allokeres |
MaxTotalOutputBytes | 512 MiB | Afgrænser summen af gemte successfulde pixelbuffers |
Rotation | ro0 | Anvender 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 |
BackgroundColor | clWhite | Indledende pixelbaggrund, før PDFium maler sideindholdet |
pprsSucceeded returnerer dimensioner, stride, pixelformat, pixels og forløbet tidpprsCancelled returnerer ingen pixels, når cancellation observeres før eller under progressive render-løkkenpprsFailed isolerer en ugyldig side, native indlæsnings- eller renderfejl eller ressourcebudget-afvisning i ErrorMessageTotalOutputBytes og end-to-end forløbet tidSourceSize, SourcePeakMemoryBytes og SourceStorageBackend eksponerer de afgrænsede indfangningsomkostningerSourceBackingKind er ppsbSharedMemory, ppsbMemoryMappedFile eller ppsbRandomAccessStore efter kilde-indfangningreInvert og reNightDuotone er post-render bitmap-transformationer og afvises af denne raw-buffer-APISaveMemoryLimit og SaveTemporaryDirectory styrer den fangede kilde, mens output-budgettet dækker gemte resultatbuffere frem for interne PDFium-allokeringerTPdf-instans samtidigt, mens det indledende snapshot fangesPixels-arrays efter brug
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;