LoadFromRangeSource

Gestionarea documentelor, performanță

Descriere

Încarcă și selectează un PDF printr-un callback sincron de acces aleator, permițând clienților HTTP, bazelor de date, magaziilor de obiecte și furnizorilor de stocare particularizați să furnizeze doar intervalele de octeți pe care le atinge analizatorul

Sintaxă

Delphi

Function TPDFlib.LoadFromRangeSource(SourceSize: Int64;
  ReadCallback: TPDFlibRangeReadEvent; Const Password: WideString;
  ChunkSize: LongInt= 0; CacheLimitBytes: Int64= 0;
  CoalesceWindowMS: Cardinal= PDF_NET_DEFAULT_COALESCE_WINDOW_MS;
  AvailabilityCallback: TPDFlibRangeAvailabilityEvent= Nil): Integer;

Parametri

SourceSizeDimensiunea totală autoritativă a sursei, în octeți
ReadCallbackCallback-ul care copiază octeții pentru un decalaj absolut al sursei
PasswordParola folosită pentru deschiderea PDF-ului, sau un șir gol pentru un document necriptat
ChunkSizeGranularitatea aliniată a preluărilor de intervale; zero selectează valoarea implicită de 64 KiB, iar valorile sub 4096 folosesc și ele valoarea implicită
CacheLimitBytesNumărul maxim de octeți reținuți peste ferestrele cele mai puțin recent utilizate; zero selectează valoarea implicită de 4 MiB, iar valorile sub un chunk sunt ridicate la un chunk
CoalesceWindowMSFereastra de agregare pentru primul chunk necache-at al fiecărei citiri absolute; 2 milisecunde este valoarea implicită, iar zero dezactivează întârzierea inițială
AvailabilityCallbackUn test opțional, fără preluare, al intervalelor de octeți deja prezente în stocarea progresivă

Valori returnate

0Argumentele sursei au fost invalide sau PDF-ul nu a putut fi încărcat; examinați LastErrorCode
1Documentul a fost încărcat și selectat

Observații

Callback-ul de citire primește decalaje absolute de la 0 și nu trebuie să scrie mai mult de Count octeți în Buffer, returnând numărul scrisȚinta callback-ului și stocarea sa de suport trebuie să rămână valide până la închiderea documentului încărcat, deoarece randarea paginilor, extragerea și salvarea pot cere intervale suplimentare mai târziuApelurile sunt sincrone și pot sosi în ordine nesevențială; un rezultat parțial este acceptat la sfârșitul fizic al sursei, în timp ce un rezultat zero neașteptat face ca încărcarea sau operația amânată curentă să eșuezeCând

AvailabilityCallback este atribuit, returnați o valoare nenulă doar când întregul interval cerut poate fi citit imediat, fără transport sau I/O blocantUn interval din cache este disponibil indiferent de rezultatul callback-ului; un callback

Nil păstrează comportamentul sincron prin tratarea fiecărui interval valid de sursă ca disponibilChunkurile aliniate evită preluările duplicate de transport pentru citirile suprapuse, în timp ce bugetul de octeți mărginește sarcina utilă reținută independent de dimensiunea documentuluiCitirile amânate de obiecte și de segmente folosesc decalaje absolute, astfel încât lucrările concurente partajează cererile pentru același chunk și contopesc chunkurile adiacente aflate în coadă, fără a modifica cursorul pozițional al fluxuluiCallback-urile sursei sunt serializate și nu trebuie să citească recursiv din același flux de intervaleFolosiți

GetRangeSourceDataAvailability

GetRangeSourceCacheInfo pentru a testa dependențele de pagină, de formular sau de obiecte indirecte, fără a citi intervalele raportate ca lipsăFolosiți SetRangeSourceCacheLimit, ClearRangeSourceCache și