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

SourceSizeDie maßgebliche Gesamtquellgröße in Byte
ReadCallbackDer Callback, der Bytes für einen absoluten Quell-Offset kopiert
PasswordDas zum Öffnen des PDF verwendete Passwort oder ein leerer String für ein unverschlüsseltes Dokument
ChunkSizeDie ausgerichtete Range-Fetch-Granularität; null wählt den 64-KiB-Standard, und Werte unter 4096 verwenden ebenfalls den Standard
CacheLimitBytesDie 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
CoalesceWindowMSDas Sammelfenster für den ersten nicht zwischengespeicherten Chunk jedes absoluten Lesevorgangs; 2 Millisekunden sind der Standard, und null deaktiviert die anfängliche Verzögerung
AvailabilityCallbackEin optionaler, nicht abrufender Test für Bytebereiche, die bereits im progressiven Speicher vorhanden sind

Rückgabewerte

0Die Quellargumente waren ungültig, oder das PDF konnte nicht geladen werden; prüfen Sie LastErrorCode
1Das 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