function RenderPagesParallel(
const PageNumbers : array of Integer;
const Options : TPdfParallelRenderOptions;
const CancellationToken: IPdfCancellationToken = nil): TPdfParallelRenderReport;
RenderPagesParallel dabartinį dokumentą vieną kartą užfiksuoja į TPdfRandomAccessStore, pašalina momentinės kopijos šifravimą ir šaltinį laiko nepakitusiu, kol uždaromi visi darbininkų dokumentai
Atmintyje esantis fiksavimas dalijamas tiesiogiai be antro baitų masyvo kopijavimo, perpiltas fiksavimas atveriamas per vieną tik skaitymui skirtą failo atvaizdą, o atvaizdo nepavykus, grįžtama prie FPDF_LoadCustomDocument blokų skaitymų iš tos pačios gijų saugios saugyklos
Kiekvienas darbininkas įkelia privatų aktyviosios PDFium dvejetainės kopijos laikinąjį egzempliorių kaip nepriklausomą modulį, inicializuoja tą modulį savo darbinėje gijoje ir naudoja savąjį FPDF_DOCUMENT, kol įkelia ir uždaro priskirtus puslapius
Modulio, dokumento, puslapio, prieauginio atvaizdavimo ir taškinės grafikos būsenos niekada neperžengia darbininkų ribų, taip išvengiant nesaugių lygiagrečių kreipinių į vieną PDFium modulį
PageNumbers naudoja viešąją puslapių, skaičiuojamų nuo vieneto, konvenciją, o grąžintas Results masyvas visada atitinka kreipinių tvarką, net kai darbininkai baigia ne iš eilės arba atskiras puslapias nesėkmingas
Kiekvienas sėkmingas rezultatas valdo iš viršaus į apačią orientuotą 32 bitų pikselių buferį su Stride = Width * 4, naudodamas BGRA baitų tvarką, nebent reReverseByteOrder pageidauja RGBA
| Field | Default | Meaning |
|---|---|---|
Dpi | 96 | Pageidaujama raiška nuo didesnės už 0 iki 2400 DPI |
MaxWorkers | 0 | 0 pasirenka iki keturių darbininkų, kitaip 1–64, ribojama kreipinių skaičiaus |
MaxPixelsPerPage | 64 MiPixels | Atmeta puslapį prieš atskiriant per didelį rezultatų buferį |
MaxTotalOutputBytes | 512 MiB | Apriboja išsaugotų sėkmingų pikselių buferių sumą |
Rotation | ro0 | Taiko tą patį sukimą kiekvienam kreipiniui ir, esant 90 arba 270 laipsnių, apsuka išvesties matmenis |
RenderOptions | [] | Natyvios PDFium atvaizdavimo vėliavėlės, įskaitant anotacijas, pilkus atspalvius, spausdinimą, glotninimą ir atvirkštinę baitų tvarką |
BackgroundColor | clWhite | Pradinis pikselių fonas, kol PDFium piešia puslapio turinį |
pprsSucceeded grąžina matmenis, eigos žingsnį, pikselių formatą, pikselius ir praėjusį laikąpprsCancelled negrąžina pikselių, kai atšaukimas pastebėtas prieš prieauginio atvaizdavimo ciklą arba jo metupprsFailed izoliuoja netinkamą puslapį, natyvų įkėlimo ar atvaizdavimo nesėkmę arba išteklių biudžeto atmetimą ErrorMessageTotalOutputBytes ir visapusiškai praėjusį laikąSourceSize, SourcePeakMemoryBytes ir SourceStorageBackend atskleidžia apriboto fiksavimo kainąSourceBackingKind yra ppsbSharedMemory, ppsbMemoryMappedFile arba ppsbRandomAccessStore po šaltinio fiksavimoreInvert ir reNightDuotone yra atvaizdavimo po taškinės grafikos transformacijos ir ši žaliavo buferio API jų nepriimaSaveMemoryLimit ir SaveTemporaryDirectory valdo užfiksuotąjį šaltinį, o išvesties biudžetas apima išsaugotus rezultatų buferius, ne PDFium vidines alokacijasTPdf egzemplioriaus lygiagrečiai, kol fiksujamas pradinis momentinis vaizdasPixels masyvus juos suvartojus
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;