function RenderPagesParallel(
const PageNumbers : array of Integer;
const Options : TPdfParallelRenderOptions;
const CancellationToken: IPdfCancellationToken = nil): TPdfParallelRenderReport;
A RenderPagesParallel az aktuális dokumentumot egyszer rögzíti egy TPdfRandomAccessStore tárba, eltávolítja a pillanatfelvétel titkosítását, és a forrást változatlanul tartja, amíg minden munkásdokumentum be nem zárul
A memóriabeli rögzítés közvetlenül osztozik, második bájttömb-másolás nélkül, az átírt rögzítés egyetlen írásvédett fájlleképezésen keresztül érhető el, a leképezés sikertelensége esetén pedig a metódus ugyanabból a szálbiztos tárolóból a FPDF_LoadCustomDocument blokkolvasására áll vissza
Minden munkás betölti az aktív PDFium bináris privát ideiglenes másolatát független modulként, inicializálja azt a modult a munkaszálán, és a kiosztott oldalak betöltése és zárása közben a saját FPDF_DOCUMENT értékét használja újra
A modul-, dokumentum-, oldal-, progresszív renderelési és bitkép-állapot soha nem lépi át a munkáshatárokat, ezzel elkerülve a nem biztonságos egyidejű hívásokat egyetlen PDFium modulba
A PageNumbers a nyilvános, egynél kezdődő oldalszámozási konvenciót használja, a visszaadott Results tömb pedig mindig a kérés sorrendjét követi, akkor is, ha a munkások sorrenden kívül fejeződnek be, vagy egy-egy oldal megbukik
Minden sikeres eredmény felülről lefelé rendezett 32 bites pixelbuffert birtokol Stride = Width * 4 lépésközzel, BGRA bájtsorrenddel, kivéve ha a reReverseByteOrder RGBA-t kér
| Field | Default | Meaning |
|---|---|---|
Dpi | 96 | Célfelbontás a 0-nál nagyobb, legfeljebb 2400 DPI tartományból |
MaxWorkers | 0 | A 0 legfeljebb négy munkást választ, egyébként 1 és 64 közti érték, a kérésszám által korlátozva |
MaxPixelsPerPage | 64 MiPixels | Elutasítja az oldalt, mielőtt túlméretes eredménybuffert foglalna |
MaxTotalOutputBytes | 512 MiB | A megtartott, sikeres pixelbufferek összegét korlátozza |
Rotation | ro0 | Minden kérésre ugyanazt a forgatást alkalmazza, és 90 vagy 270 foknál felcseréli a kimeneti méreteket |
RenderOptions | [] | Natív PDFium renderelési jelzők, beleértve a jegyzeteket, a szürkeárnyalatot, a nyomtatást, a simítást és a fordított bájtsorrendet |
BackgroundColor | clWhite | Kezdeti pixelháttér, mielőtt a PDFium megrajzolná az oldal tartalmát |
pprsSucceeded méreteket, lépésközt, pixelformátumot, pixeleket és eltelt időt ad visszapprsCancelled nem ad pixeleket, ha a megszakításra a progresszív renderelési ciklus előtt vagy közben derül fénypprsFailed az érvénytelen oldalt, a natív betöltési vagy renderelási hibát, illetve az erőforráskeret-elutasítást elkülönítve jelenti az ErrorMessage mezőbenTotalOutputBytes mezőben, valamint a teljes, végtől végig mért eltelt időtSourceSize, SourcePeakMemoryBytes és SourceStorageBackend megmutatja a korlátos rögzítés költségétSourceBackingKind a forrás rögzítése után ppsbSharedMemory, ppsbMemoryMappedFile vagy ppsbRandomAccessStorereInvert és a reNightDuotone renderelés utáni bitképtranszformációk, amelyeket ez a nyers pufferalapú API elutasítSaveMemoryLimit és a SaveTemporaryDirectory a rögzített forrást szabályozza, miközben a kimeneti keret a megtartott eredménybufferekre vonatkozik, a PDFium belső foglalásaira nemTPdf példányt párhuzamosanPixels tömbök felhasználás utáni kiürítésével szabadítsa fel
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;