Progresszív renderelés és megszakítás

A HotPDF egy betöltött oldalt több korlátos híváson keresztül renderelhet, és a hosszú futású dokumentumműveleteket egy megosztott, hívó tulajdonában lévő megszakítási tokenen keresztül állíthatja le

Progresszív oldalrenderelés

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;

A ContinueRender maximális eltelt időt ezredmásodpercben, maximális számú legfelső szintű oldaltartalom-operátort, vagy mindkettőt fogad el; a nulla korlátlan értéket jelent az adott kerethez

A hívás legalább egy operátort befejez, mielőtt nem nulla időkeretet alkalmazna, így a grafikai állapot mindig operátorhatáron szünetel

A Bitmap az élő, hívó által csak olvasható részleges bitképet teszi elérhetővé, míg a TakeBitmap másolás nélkül ruházza át a tulajdonlást, miután a munkamenet eléri a prsCompleted vagy prsCancelled állapotot

A ObjectsProcessed és a TotalObjects a legfelső szintű tartalom-operátorokat jelenti minden oldal /Contents folyamából forrássorrendben

Progresszív régió-renderelés

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;

A négy régió-koordináta PDF felhasználói térbeli pont alsó-bal origóval, és a kimeneti bitkép pontosan ezt az ablakot fedi a kért DPI-n

A munkamenet újrahasználja a gyorsítótárazott megjelenítési listát, megtartja a grafikai és szövegállapotot a hívások között, és elnyomja azokat a költséges útvonal-, szöveg-, kép-, Form- és árnyalás-festéseket, amelyek konzervatív határai nem metszik az ROI-t

Az állapot-operátorok és a szöveg-előrehaladás továbbra is forrássorrendben fut, így egy korábbi jelölés kivágása nem mozdíthat el vagy színezhet át egy későbbi látható jelölést

A RegionVisiblePaintObjects és a RegionCulledPaintObjects a megjelenítési lista-kiválasztást teszi elérhetővé, míg a csúcsmemória-foglalás a régió méreteit követi a teljes oldal helyett

Progresszív JPEG-szkennelések

Ha a THotPDF.ProgressiveJPEGScanDecoding igaz, egy alkalmas progresszív DCTDecode kép minden korlátos ContinueRender hívásnál egy JPEG-szkenneléssel halad előre, így az élő bitkép korai durva előnézetet mutathat a végső szkennelés előtt

A THotPDF.ProgressiveJPEGMaxScans minden képet 1 és 4096 szkennelés közé korlátoz, míg a dokumentum-dekódolási bájtkeret az igazított kimeneti bitképet is fedezi

A THPDFLoadedPageRenderSession.ProgressiveJPEGScansDecoded és a THPDFLoadedPageRenderSession.ProgressiveJPEGImagesDecoded a befejezett szkennelés- és képszámokat jelenti; a THPDFLoadedPageRenderSession.OnProgressiveJPEGScan minden látható szkennelés után THPDFProgressiveJPEGScanEvent értéket kap, és megszakíthatja a munkamenetet

A HPDFJpeg egység a THPDFJpegScanDecoder értéket is elérhetővé teszi nyers THPDFJpegByteArray bemenetekhez, THPDFJpegScanDecodeStatus eredményekkel és opcionális THPDFJpegCancellationCheck visszahívással a sorszintű megszakításhoz

A növekményes útvonal teljes célú DeviceRGB vagy DeviceGray JPEG-képfestéseket fogad el alapértelmezett átlátszatlansággal, maszkok, átviteli függvények, féltónusok, túlnyomtatás vagy átlátszósági csoport-állapot nélkül; minden más festés a teljes kép-dekódolót használja a renderelési szemantika megőrzéséhez

Az opció letiltása, a kodek-izoláció megkövetelése, egy korlát túllépése vagy hibás bemenet is a teljes kép-útvonalat választja anélkül, hogy részleges sikertelen dekódolást tárna fel

Folyamatjelző visszahívások

A THPDFProgressiveRenderProgressEvent minden befejezett operátor után fut, és feldolgozott és összes számlálót, valamint az eltelt renderelés-végrehajtási időt kap

Állítsa a visszahívás Cancel paraméterét igazra, hogy az adott munkamenet prsCancelled állapotban fejeződjön be a megosztott token megszakítása nélkül

Egy Form XObject, minta, képdekódolás vagy más beágyazott művelet a befoglaló legfelső szintű operátorához tartozik, és kis időkeretet túlléphet, mielőtt a vezérlés visszatér

Művelet-szintű megszakítás

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;

A THPDFCancellationToken szálbiztos, egyszeri, és a hívó tulajdona; a Cancel véglegesen megszakítást kér, az IsCancellationRequested pedig elérhetővé teszi az állapotot

A ThrowIfCancellationRequested EHPDFOperationCancelled kivételt vált ki, és a művelet nevét az OperationName mezőben őrzi meg

A THotPDF.OperationCancellationToken a betöltésre, a szinkron renderelésre, a kifejezett token nélküli progresszív renderelésre, az OptimizeLoadedStreams, a CreatePreflightReport és a ValidatePDFVT műveletekre vonatkozik

A SignPDFWithPFX és a SignPDFWithSystemCertificate olyan túlterheléseket biztosít, amelyek közvetlenül fogadnak tokent

Tulajdonlási és részeredmény-szabályok

Kapcsolódó API-k