PDFium Delphi Component Docs

TPdfProgressiveDocument klasė

Modulis: PDFium  ·  Bazinė klasė: TPdf
Natyvioji PDFium laipsniško parsisiuntimo sesija su išretintu baitų prieinamumu, prioritetiniu intervalų planavimu, ribotais pakartotiniais bandymais, atšaukimu bei dokumento, formų ir puslapių vartais

Syntax

type TPdfProgressiveDocument = class(TPdf) ... end;

Methods

MethodDescription
CreateSukuria dokumento komponentą ir jam priklausantį intervalų užklausų planuotoją
DestroyNutraukia 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ų
CheckDocumentAvailabilityGrąžina pdaAvailable, pdaNotAvailable arba pdaError ir pateikia PDFium pareikalautus sujungtuosius baitų intervalus
OpenProgressiveDocumentAtveria linearizuotą PDF per FPDFAvail_GetDocument arba visai gautą nelinearizuotą PDF per FPDF_LoadCustomDocument
CheckFormAvailabilityUžtveria formų užpildymo inicijavimą, kol natyvūs formų duomenys neprieinami
LoadAvailablePagePo formų prieinamumo pasiekus galutinę būseną užtveria ir įkelia vieną vienetu pradedamą puslapį
CancelProgressiveLoadPriklausomybių tvarka uždaro puslapį, formas, dokumentą, prieinamumo rankeną, atgalinius iškvietimus ir srauto adapterį

Properties and events

MemberTypeDescription
ProgressiveLoadingBooleanTrue, kol natyvioji prieinamumo sesija gyva
LogicalFileSizeUInt64Galutinis turinio ilgis, pateiktas serverio arba konteinerio
AvailableByteCountUInt64Monotoninis nuosekliosios prieigos dalies, kurią jau galima skaityti iš srauto, ilgis
LinearizationTPdfLinearizationNatyvioji linearizacijos išvada, kai tik prieinama pakankamai antraščių baitų
FirstAvailablePageNumberIntegerVienu pradedamas pirmasis puslapis, kai dokumento rankena jau atverta
OnDataAvailableTPdfDataAvailableEventPerrašo prieigos dalies tikrinimą išretintoms arba netvarkingos tvarkos intervalų saugykloms
RangeRequestsTPdfRangeRequestSchedulerSavininko planuotojas, užpildomas iš kiekvieno natyviojo dokumento, formų ir puslapių parsisiuntimo patarimo

Description

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į

Example

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;

Remarks

Related types

TPdfDataAvailability, TPdfDownloadRange, TPdfDownloadRanges, TPdfRangeRequest, TPdfRangeRequestPriority, TPdfRangeRequestStatistics, TPdfRangeRequestScheduler, TPdfDataAvailableEvent, TPdfLinearization, TPdfFormAvailability