Progressieve weergave en annulering

HotPDF kan een geladen pagina over meerdere begrensde aanroepen weergeven en kan langlopende documentbewerkingen stoppen via een gedeeld in eigendom van de aanroeper zijnd annulerings-token

Progressieve paginaweergave

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 accepteert een maximale verstreken tijd in milliseconden, een maximum aantal topniveau-paginainhoudsoperatoren, of beide; nul betekent onbeperkt voor dat budget

De aanroep voltooit ten minste één operator voordat een niet-nul tijdbudget wordt toegepast, zodat de grafische toestand altijd wordt onderbroken op een operatorgrens

Bitmap stelt de levende alleen-lezen-deelbitmap van de aanroeper bloot, terwijl TakeBitmap eigendom overdraagt zonder kopiëren nadat de sessie prsCompleted of prsCancelled bereikt

ObjectsProcessed en TotalObjects rapporteren topniveau-inhoudsoperatoren uit elke pagina-/Contents-stroom in bronvolgorde

Progressieve regio-weergave

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 vier regio-coördinaten zijn PDF-gebruikersruimte-punten met een links-onder-oorsprong en de uitvoerbitmap bedekt exact dat venster op de gevraagde DPI

De sessie hergebruikt de gecachede display-list, behoudt grafische- en teksttoestand over aanroepen en onderdrukt dure pad-, tekst-, afbeeldings-, Form- en shading-schilderbewerkingen waarvan de conservatieve grenzen de ROI niet snijden

Statusoperatoren en tekstvoortgang voeren nog steeds in bronvolgorde uit, zodat het weglaten van een eerdere markering een latere zichtbare markering niet kan verplaatsen of herkleuren

RegionVisiblePaintObjects en RegionCulledPaintObjects stellen de display-list-selectie bloot, terwijl de piekgeheugenreservering de regio-afmetingen volgt in plaats van de volledige pagina

Progressieve JPEG-scans

Wanneer THotPDF.ProgressiveJPEGScanDecoding waar is, gaat een in aanmerking komende progressieve DCTDecode-afbeelding met één JPEG-scan per begrensde ContinueRender-aanroep vooruit, zodat de live-bitmap een vroeg ruw voorbeeld kan tonen vóór de laatste scan

THotPDF.ProgressiveJPEGMaxScans beperkt elke afbeelding tot tussen 1 en 4096 scans, terwijl het decode-bytebudget van het document ook de uitgelijnde uitvoerbitmap bestrijkt

THPDFLoadedPageRenderSession.ProgressiveJPEGScansDecoded en THPDFLoadedPageRenderSession.ProgressiveJPEGImagesDecoded rapporteren voltooide scan- en afbeelding-aantallen; THPDFLoadedPageRenderSession.OnProgressiveJPEGScan ontvangt een THPDFProgressiveJPEGScanEvent na elke zichtbare scan en kan de sessie annuleren

De eenheid HPDFJpeg stelt ook THPDFJpegScanDecoder bloot voor raw-THPDFJpegByteArray-invoer, met THPDFJpegScanDecodeStatus-resultaten en een optionele THPDFJpegCancellationCheck-callback voor regel-niveau-annulering

Het incrementele pad accepteert full-target DeviceRGB- of DeviceGray-JPEG-afbeeldingsschilderingen met standaarddekking en zonder masks, transferfuncties, halftones, overprint of transparantiegroep-toestand; alle andere schilderingen gebruiken de volledige-afbeelding-decoder om renderingsemantiek te behouden

Het uitschakelen van de optie, het vereisen van codec-isolatie, het overschrijden van een limiet of het tegenkomen van onjuist gevormde invoer selecteert ook het volledige-afbeelding-pad zonder een gedeeltelijk mislukte decode bloot te stellen

Voortgangs-callbacks

THPDFProgressiveRenderProgressEvent draait na elke voltooide operator en ontvangt verwerkte en totale aantallen plus de verstreken weergave-uitvoeringstijd

Stel de Cancel-parameter van de callback in op waar om die sessie in prsCancelled te laten eindigen zonder het gedeelde token te annuleren

Een Form XObject, patroon, afbeeldingsdecode of andere geneste bewerking hoort bij zijn omsluitende topniveau-operator en kan een klein tijdbudget overschrijden voordat de controle terugkeert

Bewerkingsbrede annulering

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 is threadveilig, one-shot en in eigendom van de aanroeper; Cancel verzoekt permanent annulering en IsCancellationRequested stelt de toestand bloot

ThrowIfCancellationRequested werpt EHPDFOperationCancelled en behoudt de bewerkingsnaam in OperationName

THotPDF.OperationCancellationToken geldt voor laden, synchrone weergave, progressieve weergave zonder een expliciet token, OptimizeLoadedStreams, CreatePreflightReport en ValidatePDFVT

SignPDFWithPFX en SignPDFWithSystemCertificate bieden overloads die rechtstreeks een token accepteren

Eigendom- en deelresultaat-regels

Gerelateerde API's