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
| SourceSize | De gezaghebbende totale bronsize in bytes |
|---|---|
| ReadCallback | De callback die bytes kopieert voor een absolute bronoffset |
| Password | Het wachtwoord waarmee de PDF wordt geopend, of een lege string voor een niet-versleuteld document |
| ChunkSize | De uitgelichte granulariteit voor het ophalen van ranges; nul kiest de standaard van 64 KiB en waarden onder 4096 gebruiken ook de standaard |
| CacheLimitBytes | Het 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 |
| CoalesceWindowMS | Het verzamelvenster voor de eerste niet-gecache chunk van elke absolute lezing; 2 milliseconden is de standaard en nul schakelt de initiële vertraging uit |
| AvailabilityCallback | Een optionele test die niets ophaalt, voor byte-ranges die al in progressieve opslag aanwezig zijn |
Retourwaarden
| 0 | De bronargumenten waren ongeldig of de PDF kon niet worden geladen; raadpleeg LastErrorCode |
|---|---|
| 1 | Het 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