type TPdfProgressiveDocument = class(TPdf) ... end;
| Method | Description |
|---|---|
Create | Opretter dokumentkomponenten og dens ejede range-request-scheduler |
Destroy | Annullerer den progressive tilstand, før de nedarvede dokumentressourcer frigives |
BeginProgressiveLoad(AStream, AFileSize, AOwnsStream, AInitialAvailableByteCount) | Opretter den native availability-provider, mens den logiske endelige størrelse holdes adskilt fra de bytes, der i øjeblikket er gemt |
CheckDocumentAvailability | Returnerer pdaAvailable, pdaNotAvailable eller pdaError og returnerer flettede byte-intervaller, som PDFium har bedt om |
OpenProgressiveDocument | Åbner en lineariseret PDF gennem FPDFAvail_GetDocument eller en fuldt modtaget ikke-lineariseret PDF gennem FPDF_LoadCustomDocument |
CheckFormAvailability | Spærrer formularudfyldnings-initialisering, indtil de native formulardata er tilgængelige |
LoadAvailablePage | Spærrer og indlæser én 1-baseret side, efter at formulartilgængeligheden har nået en terminal tilstand |
CancelProgressiveLoad | Lukker siden, formularen, dokumentet, availability-handlen, callbacks og stream-adapteren i afhængighedsrækkefølge |
| Member | Type | Description |
|---|---|---|
ProgressiveLoading | Boolean | True, mens den native availability-session lever |
LogicalFileSize | UInt64 | Endelig indholdslængde leveret af serveren eller containeren |
AvailableByteCount | UInt64 | Monoton længde af det sammenhængende præfiks, der allerede kan læses fra streamen |
Linearization | TPdfLinearization | Native lineariseringsdom, når der er nok header-bytes tilgængelige |
FirstAvailablePageNumber | Integer | 1-baseret første side, efter at dokumenthandlen er åbnet |
OnDataAvailable | TPdfDataAvailableEvent | Overstyrer præfiks-testen for sparsomme eller ude-af-rækkefølge range-lagre |
RangeRequests | TPdfRangeRequestScheduler | Ejet scheduler fyldt fra hvert native dokument-, formular- og side-download-hint |
TPdfProgressiveDocument ejer det native FPDF_AVAIL-handle og de callback-records, som PDFium kan vende tilbage til gennem en fjern- eller voksende stream-indlæsning
Start med serverens indholdslængde og et eventuelt indledende præfiks, kald den relevante availability-metode, hent arbejde fra RangeRequests-køen, skriv hvert svar ind i det bagvedliggende random access-lager, kald CompleteRequest og gentag, indtil en terminal tilgængelighedstilstand returneres
Ved en sammenhængende download rykkes AvailableByteCount frem efter skrivning af nye bytes; ved en sparsom range-cache tildel OnDataAvailable og svar, om hvert forespurgt offset og hver størrelse kan læses
Scheduleren accepterer de samme native hints, som returneres gennem det ældre DownloadHints-output, fjerner intervaller, der allerede er kendt gennem præfiks- eller sparse-callbacket, preemter overlappende baggrundstransfers for sidekritiske bytes uden at promovere tilstødende haler og opdeler transportarbejdet ved MaxRequestSize
Lineariserede PDF'er kan åbne deres dokumentmetadata og første side, før hele filen ankommer; ikke-lineariserede PDF'er kræver den komplette fil og bruger automatisk den almindelige native custom-stream-loader
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 begrænser den logiske filstørrelse til 4 GiB, og klassen udløser en exception i stedet for at trunkere en større størrelseAvailableByteCount kan ikke falde, fordi den native parse-tilstand antager, at downloadede bytes forbliver tilgængeligeEnableV8Engine før BeginProgressiveLoad, når XFA- og V8-understøttelse kan blive nødvendigCancelProgressiveLoad eller destruktion er fuldførtCompleteRequest kaldes; fuldførelse gør intervallet straks synligt for PDFiumTStream.Position sikker; brug positioneret I/O eller en ekstern stream-lockRangeRequests.OnCancelRequest for at afbryde aktive transportoperationer, når sessionen annulleres, et hint med højere prioritet overlapper dem, eller ekstern sparsom dækning gør dem redundanteTPdfDataAvailability,
TPdfDownloadRange,
TPdfDownloadRanges,
TPdfRangeRequest,
TPdfRangeRequestPriority,
TPdfRangeRequestStatistics,
TPdfRangeRequestScheduler,
TPdfDataAvailableEvent,
TPdfLinearization,
TPdfFormAvailability