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
| SourceSize | Rozstrzygający całkowity rozmiar źródła w bajtach |
|---|---|
| ReadCallback | Procedura zwrotna kopiująca bajty dla bezwzględnego przesunięcia źródła |
| Password | Hasło użyte do otwarcia PDF albo pusty łańcuch dla dokumentu nieszyfrowanego |
| ChunkSize | Wyrównana ziarnistość pobierania zakresów; zero wybiera domyślne 64 KiB, a wartości poniżej 4096 również używają domyślnej |
| CacheLimitBytes | Maksymalna 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 |
| CoalesceWindowMS | Okno zbierania dla pierwszego niebuforowanego fragmentu każdego odczytu bezwzględnego; domyślnie 2 milisekundy, a zero wyłącza początkowe opóźnienie |
| AvailabilityCallback | Opcjonalny, niepobierający test zakresów bajtów już obecnych w magazynie progresywnym |
Wartości zwracane
| 0 | Argumenty źródła były nieprawidłowe albo nie udało się wczytać PDF; sprawdź LastErrorCode |
|---|---|
| 1 | Dokument 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