function RenderPagesParallel(
const PageNumbers : array of Integer;
const Options : TPdfParallelRenderOptions;
const CancellationToken: IPdfCancellationToken = nil): TPdfParallelRenderReport;
RenderPagesParallel enkrat zajame trenutni dokument v TPdfRandomAccessStore, odstrani šifriranje posnetka in vir pusti nespremenljivega, dokler se ne zapre vsak delavski dokument
Zajem v pomnilniku se deli neposredno, brez druge kopije bajtnega polja, preliti zajem je izpostavljen prek ene preslikave datoteke, ki je samo za branje, ob napaki preslikave pa se pot razveje nazaj na blokovska branja FPDF_LoadCustomDocument iz iste varne-za-niti shrambe
Vsak delavec naloži zasebno začasno kopijo dejavne binarne datoteke PDFium kot neodvisen modul, ta modul inicializira na svoji delovni niti in ponovno uporablja svoj FPDF_DOCUMENT, medtem ko nalaga in zapira dodeljene strani
Stanje modula, dokumenta, strani, postopnega izrisa in bitne slike nikoli ne prečka meja delavcev, s čimer se izogiba nevarnim sočasnim klicem v en modul PDFium
PageNumbers uporablja javno konvencijo strani, številčenih od 1, vrnjeno polje Results pa se vedno ujema z vrstnim redom zahtevka, tudi ko delavci končajo v drugačnem vrstnem redu ali posamična stran spodleti
Vsak uspešen rezultat poseduje slikovni medpomnilnik 32-bit s spustom od zgoraj navzdol in Stride = Width * 4, z bajtnim vrstnim redom BGRA, razen kadar reReverseByteOrder zahteva RGBA
| Field | Default | Meaning |
|---|---|---|
Dpi | 96 | Ciljna ločljivost od več kot 0 do 2400 DPI |
MaxWorkers | 0 | 0 izbere do štiri delavce, sicer 1 do 64, omejeno s številom zahtevkov |
MaxPixelsPerPage | 64 MiPixels | Zavrne stran, preden dodeli prevelik rezultatni medpomnilnik |
MaxTotalOutputBytes | 512 MiB | Omeji vsoto zadržanih uspešnih slikovnih medpomnilnikov |
Rotation | ro0 | Uveljavi isti zasuk na vsak zahtevek in zamenja izhodne mere pri 90 ali 270 stopinjah |
RenderOptions | [] | Izvorne zastavice izrisa PDFium, vključno s pripombami, sivino, tiskanjem, glajenjem in obratnim bajtnim vrstnim redom |
BackgroundColor | clWhite | Začetno ozadje pikslov, preden PDFium nariše vsebino strani |
pprsSucceeded vrne mere, korak, obliko pikslov, piksle in porabljen časpprsCancelled ne vrne pikslov, ko se preklic opazi pred ali med zanko postopnega izrisapprsFailed izolira neveljavno stran, izvorno napako nalaganja ali izrisa ali zavrnitev zaradi proračuna virov v ErrorMessageTotalOutputBytes in porabljeni čas od začetka do koncaSourceSize, SourcePeakMemoryBytes in SourceStorageBackend izpostavijo omejeno ceno zajema viraSourceBackingKind je po zajemu vira ppsbSharedMemory, ppsbMemoryMappedFile ali ppsbRandomAccessStorereInvert in reNightDuotone sta transformaciji bitne slike po izrisu in ju ta API surovih medpomnilnikov zavračaSaveMemoryLimit in SaveTemporaryDirectory upravljata zajet vir, izhodni proračun pa pokriva zadržane rezultatne medpomnilnike in ne notranjih dodelitev PDFiumTPdf sočasno ne spreminjajte, ne razložite in ne shranjujtePixels
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;