LoadFromRangeSource
Dokumentverwaltung, Performance
Beschreibung
Lädt und wählt ein PDF über einen synchronen Direktzugriffs-Callback, sodass HTTP-Clients, Datenbanken, Objektspeicher und eigene Speicheranbieter nur die Bytebereiche liefern, die der Parser berührt
Syntax
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;Parameter
| SourceSize | Die maßgebliche Gesamtquellgröße in Byte |
|---|---|
| ReadCallback | Der Callback, der Bytes für einen absoluten Quell-Offset kopiert |
| Password | Das zum Öffnen des PDF verwendete Passwort oder ein leerer String für ein unverschlüsseltes Dokument |
| ChunkSize | Die ausgerichtete Range-Fetch-Granularität; null wählt den 64-KiB-Standard, und Werte unter 4096 verwenden ebenfalls den Standard |
| CacheLimitBytes | Die maximal über Least-Recently-Used-Fenster vorgehaltenen Bytes; null wählt den 4-MiB-Standard, und Werte unter einem Chunk werden auf einen Chunk angehoben |
| CoalesceWindowMS | Das Sammelfenster für den ersten nicht zwischengespeicherten Chunk jedes absoluten Lesevorgangs; 2 Millisekunden sind der Standard, und null deaktiviert die anfängliche Verzögerung |
| AvailabilityCallback | Ein optionaler, nicht abrufender Test für Bytebereiche, die bereits im progressiven Speicher vorhanden sind |
Rückgabewerte
| 0 | Die Quellargumente waren ungültig, oder das PDF konnte nicht geladen werden; prüfen Sie LastErrorCode |
|---|---|
| 1 | Das Dokument wurde geladen und ausgewählt |
Anmerkungen
Der Lese-Callback erhält absolute nullbasierte Offsets und darf nicht mehr als Count Bytes in Buffer schreiben, wobei er die geschriebene Anzahl zurückgibt
Callback-Ziel und zugrunde liegender Speicher müssen gültig bleiben, bis das geladene Dokument geschlossen wird, da Seitenrendering, Extraktion und Speichern später zusätzliche Bereiche anfordern können
Aufrufe sind synchron und können in nicht sequenzieller Reihenfolge eintreffen; ein kurzes Ergebnis wird am physischen Ende der Quelle akzeptiert, während ein unerwartetes Nullergebnis das Laden oder die aktuelle verzögerte Operation scheitern lässt
Wenn eine AvailabilityCallback zugewiesen ist, geben Sie nur dann einen Wert ungleich null zurück, wenn der vollständige angeforderte Bereich ohne Transport oder blockierende E/A sofort lesbar ist
Ein zwischengespeicherter Bereich ist unabhängig vom Callback-Ergebnis verfügbar; eine Nil-Callback bewahrt das synchrone Verhalten, indem jeder gültige Quellbereich als verfügbar behandelt wird
Ausgerichtete Chunks vermeiden doppelte Transportabrufe für überlappende Lesungen, während das Byte-Budget die gespeicherte Nutzlast unabhängig von der Dokumentgröße begrenzt
Verzögerte Objekt- und Segmentlesungen verwenden absolute Offsets, sodass gleichzeitige Arbeit Same-Chunk-Anfragen teilt und benachbarte eingereihte Chunks zusammenführt, ohne den positionalen Stream-Cursor zu ändern
Die Quell-Callbacks werden serialisiert und dürfen nicht rekursiv aus demselben Range-Stream lesen
Verwenden Sie GetRangeSourceDataAvailability, um Abhängigkeiten von Seiten, Formularen oder indirekten Objekten zu testen, ohne als fehlend gemeldete Bereiche zu lesen
Verwenden Sie GetRangeSourceCacheInfo, SetRangeSourceCacheLimit und ClearRangeSourceCache, um den aktiven Cache zu beobachten oder zu ändern
Die Bibliothek besitzt ihren internen durchsuchbaren Range-Stream, aber nicht das Callback-Ziel oder dessen zugrunde liegenden Speicher