LoadFromRangeSource

Zarządzanie dokumentami, wydajność

Opis

Wczytuje i wybiera PDF przez synchroniczną procedurę zwrotną dostępu swobodnego, pozwalając klientom HTTP, bazom danych, magazynom obiektów i własnym dostawcom pamięci dostarczać tylko zakresy bajtów, których dotyka parser

Składnia

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;

Parametry

SourceSizeRozstrzygający całkowity rozmiar źródła w bajtach
ReadCallbackProcedura zwrotna kopiująca bajty dla bezwzględnego przesunięcia źródła
PasswordHasło użyte do otwarcia PDF albo pusty łańcuch dla dokumentu nieszyfrowanego
ChunkSizeWyrównana ziarnistość pobierania zakresów; zero wybiera domyślne 64 KiB, a wartości poniżej 4096 również używają domyślnej
CacheLimitBytesMaksymalna liczba bajtów zatrzymywana w poprzek okien najdawniej używanych; zero wybiera domyślne 4 MiB, a wartości poniżej jednego fragmentu są podnoszone do jednego fragmentu
CoalesceWindowMSOkno zbierania dla pierwszego niebuforowanego fragmentu każdego odczytu bezwzględnego; domyślnie 2 milisekundy, a zero wyłącza początkowe opóźnienie
AvailabilityCallbackOpcjonalny, niepobierający test zakresów bajtów już obecnych w magazynie progresywnym

Wartości zwracane

0Argumenty źródła były nieprawidłowe albo nie udało się wczytać PDF; sprawdź LastErrorCode
1Dokument został wczytany i wybrany

Uwagi

Wywołanie zwrotne odczytu otrzymuje absolutne przesunięcia o podstawie zero i musi zapisać do Buffer nie więcej niż Count bajtów, zwracając liczbę zapisanych

Cel wywołania zwrotnego i jego magazyn podporowy muszą pozostać ważne do zamknięcia wczytanego dokumentu, bo renderowanie stron, ekstrakcja i zapis mogą później żądać dalszych zakresów

Wywołania są synchroniczne i mogą przychodzić w kolejności niesekwencyjnej; krótki wynik jest akceptowany na fizycznym końcu źródła, a nieoczekiwany wynik zero powoduje niepowodzenie wczytywania albo bieżącej odroczonej operacji

Gdy AvailabilityCallback jest przypisany, zwracaj wartość niezerową tylko, gdy kompletny żądany zakres da się odczytać natychmiast, bez transportu albo blokującego I/O

Podręczny zakres jest dostępny niezależnie od wyniku wywołania zwrotnego; Nil jako wywołanie zwrotne zachowuje zachowanie synchroniczne, traktując każdy ważny zakres źródła jako dostępny

Wyrównane bloki unikają zduplikowanych pobrań transportowych dla nakładających się odczytów, a budżet bajtów ogranicza zatrzymany ładunek niezależnie od rozmiaru dokumentu

Odroczone odczyty obiektów i segmentów używają absolutnych przesunięć, więc praca współbieżna współdzieli żądania tego samego bloku i scala sąsiednie zakolejkowane bloki bez zmiany pozycyjnego kursora strumienia

Wywołania zwrotne źródła są serializowane i nie mogą rekurencyjnie czytać z tego samego strumienia zakresów

Użyj GetRangeSourceDataAvailability, by testować zależności stron, formularzy albo obiektów pośrednich bez czytania zakresów raportowanych jako brakujące

Użyj GetRangeSourceCacheInfo, SetRangeSourceCacheLimit i ClearRangeSourceCache, by obserwować albo zmieniać aktywny bufor

Biblioteka posiada swój wewnętrzny przeszukiwalny strumień zakresów, ale nie posiada celu wywołania zwrotnego ani jego magazynu podporowego