LoadFromRangeSource

Documentbeheer, prestaties

Beschrijving

Laadt en selecteert een PDF via een synchrone callback voor willekeurige toegang, waardoor HTTP-clients, databases, object stores en aangepaste opslagproviders alleen de byte-ranges hoeven aan te leveren die de parser raakt

Syntaxis

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;

Parameters

SourceSizeDe gezaghebbende totale bronsize in bytes
ReadCallbackDe callback die bytes kopieert voor een absolute bronoffset
PasswordHet wachtwoord waarmee de PDF wordt geopend, of een lege string voor een niet-versleuteld document
ChunkSizeDe uitgelichte granulariteit voor het ophalen van ranges; nul kiest de standaard van 64 KiB en waarden onder 4096 gebruiken ook de standaard
CacheLimitBytesHet maximum aan bytes dat over minst-recent-gebruikte vensters wordt vastgehouden; nul kiest de standaard van 4 MiB en waarden onder één chunk worden verhoogd naar één chunk
CoalesceWindowMSHet verzamelvenster voor de eerste niet-gecache chunk van elke absolute lezing; 2 milliseconden is de standaard en nul schakelt de initiële vertraging uit
AvailabilityCallbackEen optionele test die niets ophaalt, voor byte-ranges die al in progressieve opslag aanwezig zijn

Retourwaarden

0De bronargumenten waren ongeldig of de PDF kon niet worden geladen; raadpleeg LastErrorCode
1Het document is geladen en geselecteerd

Opmerkingen

De leescallback ontvangt absolute nulgebaseerde offsets en mag niet meer dan Count bytes naar Buffer schrijven, met het aantal geschreven bytes als teruggave

Het callbackdoel en zijn onderliggende opslag moeten geldig blijven totdat het geladen document wordt gesloten, want paginarendering, extractie en opslaan kunnen later aanvullende bereiken opvragen

Aanroepen zijn synchroon en kunnen in niet-sequentiële volgorde binnenkomen; een kort resultaat wordt aan het fysieke einde van de bron geaccepteerd, terwijl een onverwacht nulresultaat het laden of de huidige uitgestelde bewerking laat falen

Wanneer AvailabilityCallback is toegewezen, geef alleen een waarde anders dan nul terug wanneer het volledige aangevraagde bereik onmiddellijk kan worden gelezen zonder transport of blokkerende I/O

Een gecacht bereik is beschikbaar ongeacht het callbackresultaat; een Nil-callback behoudt synchroon gedrag door elk geldig bronbereik als beschikbaar te behandelen

Uitgelijnde blokken voorkomen dubbele transportophalingen bij overlappende lezingen, terwijl het bytebudget de vastgehonden payload onafhankelijk van documentgrootte begrenst

Uitgestelde object- en segmentlezingen gebruiken absolute offsets, dus gelijktijdig werk deelt verzoeken voor hetzelfde blok en voegt aangrenzende blokken in de wachtrij samen zonder de positionele streamcursor te wijzigen

De broncallbacks worden geserialiseerd en mogen niet recursief uit hetzelfde bereikstream lezen

Gebruik GetRangeSourceDataAvailability om pagina-, formulier- of indirect-objectafhankelijkheden te testen zonder bereiken te lezen die als ontbrekend zijn gemeld

GetRangeSourceCacheInfo om pagina-, formulier- of indirecte-objectafhankelijkheden te testen zonder ranges te lezen die als ontbrekend zijn gemeldGebruik SetRangeSourceCacheLimit, ClearRangeSourceCache en

De bibliotheek is eigenaar van haar interne positioneerbare bereikstream, maar niet van het callbackdoel of de onderliggende opslag ervan