Progressive Rendering and Cancellation

HotPDF gali atvaizduoti įkeltą puslapį per kelis apribotus kvietimus ir gali sustabdyti ilgiau trunkančias dokumento operacijas per bendrą kvietėjo valdomą atšaukimo žetoną

Žingsninis puslapių atvaizdavimas

Linearizuotiesiems tinklo šaltiniams THPDFLinearizedPageRedrawScheduler atskira pirmojo atvaizdavimo diapazonus nuo neprivalomų bendrų objektų priklausomybių ir prašo perbraižyti tik tada, kai naujai atklius priklausomybė gali pakeisti puslapį

Session := PDF.BeginLoadedPageProgressiveRender(0, 144);
try
  repeat
    Status := Session.ContinueRender(8, 128);
    Preview.Assign(Session.Bitmap);
  until Status in [prsCompleted, prsCancelled];

  if Status = prsCompleted then
    FinalBitmap := Session.TakeBitmap;
finally
  Session.Free;
end;

ContinueRender priima didžiausiąjį praėjusį laiką milisekundėmis, didžiausiąjį viršutinio lygio puslapio turinio operatorių skaičių arba abu; nulinė reikšmė reiškia neribotą tą biudžetą

Kvietimas baigia bent vieną operatorių prieš taikydamas nenulinę laiko biologę, todėl grafikos būsena visada pristabdoma operatoriaus riboje

Bitmap atskleidžia gyvąjį tik skaitymui skirtą dalinį taškų atvaizdą, o TakeBitmap po prsCompleted arba prsCancelled pasiekimo perduoda valdymą nekopijuodamas

ObjectsProcessed ir TotalObjects rodo aukščiausio lygio turinio operatorius iš kiekvieno puslapio /Contents srauto šaltinio tvarka

Prieauginis sričių atvaizdavimas

Session := PDF.BeginLoadedPageProgressiveRegionRender(
  0, 72, 144, 360, 432, 144);
try
  repeat
    Status := Session.ContinueRender(6, 96);
  until Status in [prsCompleted, prsCancelled];
finally
  Session.Free;
end;

Keturios srities koordinatės yra PDF naudotojo erdvės taškai su kairės apatinės kilmės atskaita, o išvesties bitmap tiksliai dengia tą langą pageidaujamuoju DPI

Sesija naudoja podėlyje esantį display list, išlaiko grafikos ir teksto būsenas tarp kvietimų ir slopina brangius kontūrų, teksto, vaizdų, Form ir šydymų piešinius, kurių konservatyviosios ribos nesikerta su ROI

Būsenos operatoriai ir teksto žingsnis vis tiek vyksta šaltinio tvarka, tad ankstesnio ženklo išmetimas negali perkelti arba pakeisti spalvą paskesniam matomam ženklui

RegionVisiblePaintObjects ir RegionCulledPaintObjects atskleidžia display list atranką, o didžiausios atminties rezervavimas priklauso nuo srities matmenų, o ne nuo viso puslapio

Prieauginės JPEG peržiūros

Kai THotPDF.ProgressiveJPEGScanDecoding yra true, tinkamas progresyvusis DCTDecode vaizdas kiekvienu apribotu ContinueRender iškvietimu pasistūmi per vieną JPEG scan, todėl gyvas bitmap iki paskutinio scan gali parodyti ankstyvą grubią peržiūrą

THotPDF.ProgressiveJPEGMaxScans kiekvieną vaizdą riboja nuo 1 iki 4096 peržiūrų, o dokumento iškodavimo baitų biudžetas apima ir sulygiuotąją išvesties bitmap

THPDFLoadedPageRenderSession.ProgressiveJPEGScansDecoded ir THPDFLoadedPageRenderSession.ProgressiveJPEGImagesDecoded rodo užbaigtų scan ir vaizdų skaičių; THPDFLoadedPageRenderSession.OnProgressiveJPEGScan po kiekvieno matomo scan gauna THPDFProgressiveJPEGScanEvent ir gali atšaukti sesiją

HPDFJpeg modulis taip pat atskleidžia THPDFJpegScanDecoder neapdorotoms THPDFJpegByteArray įvestims, su THPDFJpegScanDecodeStatus rezultatais ir neprivalomuoju THPDFJpegCancellationCheck atgaliniu kvietimu eilučių lygio atšaukimui

Prieaugio kelias priima visą paskirtį dengiančius DeviceRGB arba DeviceGray JPEG vaizdų piešinius su numatytuoju drumstumu be kaukių, perdavimo funkcijų, rastro (halftone), overprint arba permatomumo grupės būsenos; visi kiti piešiniai naudoja pilno vaizdo dekoderį, kad išliktų atvaizdavimo semantika

Išjungus parinktį, reikalaujant kodekso izoliacijos, viršijus ribą arba sutikus netinkamą įvestį, taip pat renkamas pilno vaizdo kelias, neatskleidžiant dalinės nesėkmingos iškodavimo išvesties

Eigos atgaliniai kvietimai

THPDFProgressiveRenderProgressEvent vyksta po kiekvieno užbaigto operatoriaus ir gauna apdorotų bei visų skaičius ir praėjusį atvaizdavimo vykdymo laiką

Nustatykite atgalinio kvietimo Cancel parametrą į true, kad sesija būtų užbaigta prsCancelled, neužbaigiant bendrojo žetono

Form XObject, raštas, vaizdo iškodavimas arba kita įdėtoji operacija priklauso jos apsupančiam viršutinio lygio operatoriui ir gali viršyti mažąjį laiko biudžetą, kol valdymas sugrįžta

Visos operacijos atšaukimas

Token := THPDFCancellationToken.Create;
try
  PDF.OperationCancellationToken := Token;
  Worker.Start;
  // Call Token.Cancel from another thread when the operation should stop
finally
  PDF.OperationCancellationToken := nil;
  Token.Free;
end;

THPDFCancellationToken yra gijoms saugus, vienkartinis ir valdomas kvietėjo; Cancel nuolatinei atšaukia operaciją, o IsCancellationRequested atskleidžia būseną

ThrowIfCancellationRequested iškelia EHPDFOperationCancelled ir išsaugo operacijos pavadinimą OperationName

THotPDF.OperationCancellationToken taikomas įkėlimui, sinchroniniam atvaizdavimui, prieauginiam atvaizdavimui be aiškaus žetono, OptimizeLoadedStreams, CreatePreflightReport ir ValidatePDFVT

SignPDFWithPFX ir SignPDFWithSystemCertificate turi perkrovas, kurios tiesiogiai priima token

Nuosavybė ir dalinių rezultatų taisyklės

Susijusios API