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
- A dokumentumnak és a tokennek túl kell élnie minden rájuk hivatkozó
THPDFLoadedPageRenderSessionértéket - A megszakított betöltést friss betöltés követheti ugyanazon a dokumentumpéldányon
- A folyam-optimalizálás együttműködő, nem tranzakciós, így a megszakítás előtt befejezett folyamok optimalizálva maradnak
- A megszakított aláírási célhely részleges kimenetet tartalmazhat, és eldobandó, ha atomi kézbesítés szükséges
- Egy Windows privátkulcs-szolgáltató hívás nem szakítható meg biztonságosan, ezért a megszakítást közvetlenül a hívás előtt és után figyelik meg