PDFium Delphi Component Docs

RenderPagesParallel metodas

Komponentas: TPdf  ·  Modulis: PDFium
Atvaizduoja kelis puslapių kreipinius lygiagrečiai, kai kiekvienas darbininkas valdo izoliuotą PDFium dokumentą ir puslapio rankeną

Syntax

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

Description

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

Options

FieldDefaultMeaning
Dpi96Pageidaujama raiška nuo didesnės už 0 iki 2400 DPI
MaxWorkers00 pasirenka iki keturių darbininkų, kitaip 1–64, ribojama kreipinių skaičiaus
MaxPixelsPerPage64 MiPixelsAtmeta puslapį prieš atskiriant per didelį rezultatų buferį
MaxTotalOutputBytes512 MiBApriboja išsaugotų sėkmingų pikselių buferių sumą
Rotationro0Taiko 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ą
BackgroundColorclWhitePradinis pikselių fonas, kol PDFium piešia puslapio turinį

Results

Remarks

Example

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;

See Also

RenderPage, RenderPageProgressive, RenderTile