LoadFromRangeSource
Belge yönetimi, Performans
Açıklama
Bir PDF'yi senkron bir rastgele erişim geri çağırması üzerinden yükler ve seçer; böylece HTTP istemcileri, veritabanları, nesne depoları ve özel depolama sağlayıcıları yalnızca ayrıştırıcının dokunduğu bayt aralıklarını sunabilir
Sözdizimi
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;Parametreler
| SourceSize | Yetkili toplam kaynak boyutu, bayt cinsinden |
|---|---|
| ReadCallback | Mutlak bir kaynak ofseti için bayt kopyalayan geri çağırma |
| Password | PDF'yi açmak için kullanılan parola; şifrelenmemiş belge için boş dize |
| ChunkSize | Hizalanmış aralık getirme granülaritesi; sıfır 64 KiB varsayılanını seçer ve 4096 altındaki değerler de varsayılanı kullanır |
| CacheLimitBytes | En son kullanılan pencereler boyunca tutulan en yüksek bayt; sıfır 4 MiB varsayılanını seçer ve bir parçanın altındaki değerler bir parçaya yükseltilir |
| CoalesceWindowMS | Her mutlak okumanın önbelleğe alınmamış ilk parçası için toplama penceresi; varsayılan 2 milisaniye ve sıfır ilk gecikmeyi devre dışı bırakır |
| AvailabilityCallback | Aşamalı depolamada zaten bulunan bayt aralıkları için isteğe bağlı, getirme yapmayan bir sınama |
Dönüş değerleri
| 0 | Kaynak bağımsız değişkenleri geçersizdi veya PDF yüklenemedi; LastErrorCode değerini inceleyin |
|---|---|
| 1 | Belge yüklendi ve seçildi |
Açıklamalar
Okuma geri çağrımı mutlak sıfır tabanlı ofsetler alır, Buffer'a en fazla Count bayt yazmalı ve yazılan sayıyı döndürmelidir
Sayfa işleme, ayıklama ve kaydetme daha sonra ek aralıklar isteyebileceğinden geri çağrım hedefi ve onu destekleyen depolama, yüklenen belge kapatılana dek geçerli kalmalıdır
Çağrılar eşzamanlıdır ve sırasız gelebilir; kaynağın fiziksel sonunda kısa bir sonuç kabul edilirken beklenmedik bir sıfır sonuç, yüklemeyi veya geçerli ertelenmiş işlemi başarısız kılar
AvailabilityCallback atandığında, yalnızca istenen aralığın tamamı aktarım veya engelleyici G/Ç olmaksızın hemen okunabilecekken sıfır olmayan bir değer döndürün
Önbellekteki bir aralık, geri çağrım sonucundan bağımsız olarak kullanılabilir; Nil geri çağrımı, her geçerli kaynak aralığını kullanılabilir sayarak eşzamanlı davranışı korur
Hizalanmış öbekler, üst üste binen okumalar için yinelenen aktarım getirmelerinden kaçınır; bayt bütçesi ise saklanan yükü belge boyutundan bağımsız sınırlar
Ertelenmiş nesne ve bölüm okumaları mutlak ofsetler kullanır; böylece eşzamanlı iş aynı öbek isteklerini paylaşır ve kuyruktaki bitişik öbekleri konumsal akış imlecini değiştirmeden birleştirir
Kaynak geri çağrımları serileştirilir ve aynı aralık akışından özyinelemeli okumamalıdır
Eksik bildirilen aralıkları okumadan sayfa, form veya dolaylı nesne bağımlılıklarını sınamak için GetRangeSourceDataAvailability kullanın
Etkin önbelleği gözlemlemek veya değiştirmek için GetRangeSourceCacheInfo, SetRangeSourceCacheLimit ve ClearRangeSourceCache kullanın
Kitaplık kendi iç konumlandırılabilir aralık akışının sahibidir ama geri çağrım hedefinin veya onu destekleyen depolamanın sahibi değildir