type TPdfProgressiveDocument = class(TPdf) ... end;
| Method | Description |
|---|---|
Create | Sukuria dokumento komponentą ir jam priklausantį intervalų užklausų planuotoją |
Destroy | Nutraukia laipsniškojo įkėlimo būseną prieš atlaisvindamas paveldėtuosius dokumento išteklius |
BeginProgressiveLoad(AStream, AFileSize, AOwnsStream, AInitialAvailableByteCount) | Sukuria natyvųjį prieinamumo tiekėją, loginį galutinį dydį laikydamas atskirai nuo šiuo metu saugomų baitų |
CheckDocumentAvailability | Grąžina pdaAvailable, pdaNotAvailable arba pdaError ir pateikia PDFium pareikalautus sujungtuosius baitų intervalus |
OpenProgressiveDocument | Atveria linearizuotą PDF per FPDFAvail_GetDocument arba visai gautą nelinearizuotą PDF per FPDF_LoadCustomDocument |
CheckFormAvailability | Užtveria formų užpildymo inicijavimą, kol natyvūs formų duomenys neprieinami |
LoadAvailablePage | Po formų prieinamumo pasiekus galutinę būseną užtveria ir įkelia vieną vienetu pradedamą puslapį |
CancelProgressiveLoad | Priklausomybių tvarka uždaro puslapį, formas, dokumentą, prieinamumo rankeną, atgalinius iškvietimus ir srauto adapterį |
| Member | Type | Description |
|---|---|---|
ProgressiveLoading | Boolean | True, kol natyvioji prieinamumo sesija gyva |
LogicalFileSize | UInt64 | Galutinis turinio ilgis, pateiktas serverio arba konteinerio |
AvailableByteCount | UInt64 | Monotoninis nuosekliosios prieigos dalies, kurią jau galima skaityti iš srauto, ilgis |
Linearization | TPdfLinearization | Natyvioji linearizacijos išvada, kai tik prieinama pakankamai antraščių baitų |
FirstAvailablePageNumber | Integer | Vienu pradedamas pirmasis puslapis, kai dokumento rankena jau atverta |
OnDataAvailable | TPdfDataAvailableEvent | Perrašo prieigos dalies tikrinimą išretintoms arba netvarkingos tvarkos intervalų saugykloms |
RangeRequests | TPdfRangeRequestScheduler | Savininko planuotojas, užpildomas iš kiekvieno natyviojo dokumento, formų ir puslapių parsisiuntimo patarimo |
TPdfProgressiveDocument valdo natyviąją FPDF_AVAIL rankeną ir atgalinių iškvietimų įrašus, kuriuos PDFium gali pakartotinai lankytis nuotolinio arba augančio srauto įkėlimo metu
Pradėkite nuo serverio turinio ilgio ir bet kokios pradinės prieigos dalies, kvieskite atitinkamąjį prieinamumo metodą, iš RangeRequests išimkite darbus, kiekvieną atsakymą rašykite į pagrindinę atsitiktinės prieigos saugyklą, kvieskite CompleteRequest ir kartokite, kol grąžinama galutinė prieinamumo būsena
Nuosekliajam parsisiuntimui po naujų baitų įrašymo didinkite AvailableByteCount; išretintajai intervalų podėliui priskirkite OnDataAvailable ir atsakykite, ar kiekvienas pareikalautas poslinkis ir dydis skaitomi
Planuotojas priima tuos pačius natyviuosius patarimus, grąžinamus per senąją DownloadHints išvestį, pašalina jau žinomus per prieigos dalį arba išretintąjį atgalinį iškvietimą intervalus, puslapiui kritiniams baitams perima persidengiančius foninius perdavimus neperskirdamas gretimų uodegų ir suskaido transporto darbus ties MaxRequestSize
Linearizuoti PDF gali atverti dokumento metaduomenis ir pirmąjį puslapį prieš atkeliaujant visam failui; nelinearizuoti PDF reikalauja pilno failo ir automatiškai naudoja įprastąjį natyvųjį tinkinto srauto įkėliklį
var
Hints: TPdfDownloadRanges;
Request: TPdfRangeRequest;
State: TPdfDataAvailability;
begin
Progressive.BeginProgressiveLoad(CacheStream, ContentLength,
False, InitialPrefixLength);
repeat
State := Progressive.CheckDocumentAvailability(Hints);
while Progressive.RangeRequests.TryDequeue(Request) do
begin
FetchRangeIntoCache(Request.Offset, Request.Size);
Progressive.RangeRequests.CompleteRequest(Request);
end;
until State <> pdaNotAvailable;
if State = pdaAvailable then
Progressive.OpenProgressiveDocument;
end;
FPDF_FILEACCESS ABI riboja loginį failo dydį iki 4 GiB, o klasė iškelia išimtį vietoj didesnio dydžio apkirpimoAvailableByteCount negali mažėti, nes natyvioji analizės būsena priima, kad parsiųsti baitai lieka prieinamiEnableV8Engine prieš BeginProgressiveLoad, kai gali prireikti XFA ir V8 palaikymoCancelProgressiveLoad arba sunaikinimasCompleteRequest; užbaigimas intervalą PDFium padaro matomą iškartTStream.Position nepadaro saugios; naudokite pozicinę įvestį ir išvestį arba išorinį srauto užraktąRangeRequests.OnCancelRequest, kad nutrauktumėte aktyviąsias transporto operacijas, kai sesija atšaukiama, aukštesnio prioriteto patarimas jas persidengia arba išorinė išretintoji aprėptis jas padaro nereikalingasTPdfDataAvailability,
TPdfDownloadRange,
TPdfDownloadRanges,
TPdfRangeRequest,
TPdfRangeRequestPriority,
TPdfRangeRequestStatistics,
TPdfRangeRequestScheduler,
TPdfDataAvailableEvent,
TPdfLinearization,
TPdfFormAvailability