LoadFromRangeSource

Dokumenthåndtering, ydeevne

Beskrivelse

Indlæser og vælger en PDF gennem et synkront random access-callback, så HTTP-klienter, databaser, objektlagre og brugerdefinerede lagerudbydere kun kan levere de byte-områder, fortolkeren rører

Syntaks

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;

Parametre

SourceSizeDen autoritative samlede kildestørrelse i bytes
ReadCallbackDet callback, der kopierer bytes for en absolut kildeforskydning
PasswordAdgangskoden, der bruges til at åbne PDF'en, eller en tom streng for et ukrypteret dokument
ChunkSizeGranulariteten for justerede områdehentninger; nul vælger standardværdien 64 KiB, og værdier under 4096 bruger også standardværdien
CacheLimitBytesDet maksimale antal bytes gemt på tværs af mindst-senest-anvendte vinduer; nul vælger standardværdien 4 MiB, og værdier under én chunk hæves til én chunk
CoalesceWindowMSIndsamlingsvinduet for den første ikke-cachede chunk i hver absolut læsning; 2 millisekunder er standardværdien, og nul deaktiverer den indledende ventetid
AvailabilityCallbackEn valgfri ikke-hentende test for byte-områder, der allerede findes i progressivt lager

Returværdier

0Kildeargumenterne var ugyldige, eller PDF'en kunne ikke indlæses; undersøg LastErrorCode
1Dokumentet blev indlæst og valgt

Bemærkninger

Læse-callback'en modtager absolutte nul-baserede offsets og må højst skrive Count bytes til Buffer og returnerer antallet skrevet

Callback-målet og dets bagvedliggende lager skal forblive gyldigt, indtil det indlæste dokument lukkes, fordi siderendering, udtrækning og gemning senere kan anmode om flere områder

Kald er synkrone og kan ankomme i ikke-sekventiel rækkefølge; et kort resultat accepteres ved kildens fysiske ende, mens et uventet nulresultat får indlæsning eller den aktuelle udskudte operation til at fejle

Når AvailabilityCallback er tildelt, returnér en ikke-nul-værdi kun, når det komplette anmodede område kan læses straks uden transport eller blokerende I/O

Et mellemlagret område er tilgængeligt uanset callback-resultatet; et Nil-callback bevarer synkron adfærd ved at behandle hvert gyldigt kildeområde som tilgængeligt

Justerede blokke undgår duplikat-transporthentninger for overlappende læsninger, mens bytebudgettet afgrænser gemt fremførsel uafhængigt af dokumentstørrelsen

Udskudte objekt- og segmentlæsninger bruger absolutte offsets, så samtidigt arbejde deler samme blok-anmodninger og fletter tilstødende køede blokke uden at ændre den positionelle strøm-cursor

Kilde-callbacks serialiseres og må ikke rekursivt læse fra den samme områdestrøm

Brug GetRangeSourceDataAvailability til at teste side-, formular- eller indirekt objekt-afhængigheder uden at læse områder rapporteret som manglende

Brug GetRangeSourceCacheInfo, SetRangeSourceCacheLimit og ClearRangeSourceCache til at observere eller ændre den aktive cache

Biblioteket ejer sin interne søgbare områdestrøm, men ejer ikke callback-målet eller dets bagvedliggende lager