Progressiv gjengivelse og avbrytelse

HotPDF kan gjengi en lastet side over flere avgrensede kall, og kan stoppe langvarige dokumentoperasjoner gjennom et delt kallereid avbrytelses-token

Progressiv sidegjengivelse

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 godtar en maksimal forløpt tid i millisekunder, et maksimalt antall toppnivå-sideinnholdsoperatører, eller begge; null betyr ubegrenset for det budsjettet

Kallet fullfører minst én operatør før det anvender et ikke-null tidsbudsjett, så grafikkstatusen er alltid pauset ved en operatørgrense

Bitmap avdekker den levende kallereid-som-bare-leser delvise bitmappen, mens TakeBitmap overfører eierskap uten å kopiere etter at økten når prsCompleted eller prsCancelled

ObjectsProcessed og TotalObjects rapporterer toppnivå-innholdsoperatører fra hver side-/Contents-strøm i kildeordrekkefølge

Progressiv region-gjengivelse

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;

De fire regionkoordinatene er PDF-brukerrom-punkter med en nedre-venstre opprinnelse, og utdata-bitmappen dekker nøyaktig det vinduet ved den ønskede DPI-en

Økten gjenbruker den hurtigbufrede visningslisten, beholder grafik- og tekststatus på tvers av kall, og undertrykker kostbar bane-, tekst-, bilde-, Form- og skyggeleggingsmaling med konservative grenser som ikke krysser ROI-en

Statusoperatører og tekstframføring utføres fortsatt i kildeordrekkefølge, så utskjæring av et tidligere merke kan ikke flytte eller male om et senere synlig merke

RegionVisiblePaintObjects og RegionCulledPaintObjects avdekker visningsliste-utvalget, mens toppminne-reservasjonen følger regiondimensjonene i stedet for hele siden

Progressive JPEG-skanninger

Når THotPDF.ProgressiveJPEGScanDecoding er sann, avanserer et kvalifisert progressivt DCTDecode-bilde med én JPEG-skanning per avgrenset ContinueRender-kall, slik at den levende bitmappen kan vise en tidlig grov forhåndsvisning før den siste skanningen

THotPDF.ProgressiveJPEGMaxScans begrenser hvert bilde til mellom 1 og 4096 skanninger, mens dokumentets dekode-byte-budsjett også dekker den justerte utdata-bitmappen

THPDFLoadedPageRenderSession.ProgressiveJPEGScansDecoded og THPDFLoadedPageRenderSession.ProgressiveJPEGImagesDecoded rapporterer fullførte skanne- og bildetall; THPDFLoadedPageRenderSession.OnProgressiveJPEGScan mottar en THPDFProgressiveJPEGScanEvent etter hver synlige skanning og kan avbryte økten

Enheten HPDFJpeg avdekker også THPDFJpegScanDecoder for rå THPDFJpegByteArray-innganger, med THPDFJpegScanDecodeStatus-resultater og en valgfri THPDFJpegCancellationCheck-tilbakeringing for rad-nivå-avbrytelse

Den inkrementelle banen godtar full-mål DeviceRGB- eller DeviceGray-JPEG-bildemalinger med standard opasitet og ingen masker, overføringsfunksjoner, halvtoner, overprint eller transparensgruppe-status; alle andre malinger bruker full-bilde-dekoderen for å bevare gjengivelsessemantikk

Å deaktivere alternativet, kreve kodek-isolasjon, overskride en grense eller møte feilformert inngang velger også full-bilde-banen uten å blottlegge en delvis feilet dekoding

Framdrifts-tilbakeringinger

THPDFProgressiveRenderProgressEvent kjører etter hver fullførte operatør og mottar behandlede og totale tall pluss forløpt gjengivelses-utførelsestid

Sett tilbakeringingens Cancel-parameter til sann for å avslutte den økten i prsCancelled uten å avbryte det delte tokenet

En Form-XObject, et mønster, en bildedekoding eller en annen nestet operasjon tilhører den omsluttende toppnivå-operatøren og kan overskride et lite tidsbudsjett før kontrollen returnerer

Operasjonsoverordnet avbrytelse

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 er trådsikker, engangs og kallereid; Cancel ber permanent om avbrytelse, og IsCancellationRequested avdekker tilstanden

ThrowIfCancellationRequested utløser EHPDFOperationCancelled og bevarer operasjonsnavnet i OperationName

THotPDF.OperationCancellationToken gjelder innlasting, synkron gjengivelse, progressiv gjengivelse uten eksplisitt token, OptimizeLoadedStreams, CreatePreflightReport og ValidatePDFVT

SignPDFWithPFX og SignPDFWithSystemCertificate gir overlastinger som godtar et token direkte

Eierskaps- og delvis-resultatregnler

Relaterte API-er