LoadFromRangeSource
文件管理、效能
描述
透過同步隨機存取回呼載入並選取 PDF,讓 HTTP 用戶端、資料庫、物件儲存與自訂儲存提供者只需提供解析器接觸到的位元組範圍
語法
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;參數
| SourceSize | 來源總大小的權威值(位元組) |
|---|---|
| ReadCallback | 為絕對來源偏移複製位元組的回呼 |
| Password | 開啟 PDF 用的密碼;未加密文件為空字串 |
| ChunkSize | 對齊的範圍擷取粒度;零表示選用預設 64 KiB,低於 4096 的值也使用預設 |
| CacheLimitBytes | 跨最近最少使用視窗保留的最大位元組數;零表示選用預設 4 MiB,低於一個區塊的值會提升為一個區塊 |
| CoalesceWindowMS | 每次絕對讀取第一個未快取區塊的彙整視窗;預設 2 毫秒,零表示停用初始延遲 |
| AvailabilityCallback | 選用、不發出請求的測試,用於判斷漸進式儲存中既有的位元組範圍 |
傳回值
| 0 | 來源引數無效或無法載入 PDF;請檢查 LastErrorCode |
|---|---|
| 1 | 文件已載入並選取 |
備註
讀取回呼收到絕對的 0-based 位移,寫入 Buffer 不得超過 Count 位元組,並傳回實際寫入數
回呼目標及其後盾儲存區必須在載入的文件關閉前保持有效,因為頁面渲染、萃取與儲存之後可能再請求其他範圍
呼叫為同步且可能非循序到達;來源實體結尾的短讀取可接受,非預期的零結果會使載入或目前的延遲操作失敗
指派 AvailabilityCallback 後,只有在完整請求範圍能立即讀取、不需傳輸或封鎖式 I/O 時,才傳回非零值
快取範圍無論回呼結果為何都視為可用;Nil 回呼則把每個有效來源範圍視為可用,維持同步行為
對齊的區塊避免重疊讀取的重複傳輸抓取;位元組預算則讓保留承載與文件大小脫鉤
延遲的物件與片段讀取使用絕對位移,並行工作因此能共用相同區塊的請求、合併相鄰的排隊區塊,且不更動位置型串流游標
來源回呼為序列化執行,不得遞迴讀取同一範圍串流
請用 GetRangeSourceDataAvailability 測試頁面、表單或間接物件依賴,不讀取回報為缺少的範圍
請用 GetRangeSourceCacheInfo、SetRangeSourceCacheLimit 與 ClearRangeSourceCache 觀察或調整作用中的快取
程式庫擁有內部的可定址範圍串流,但不擁有回呼目標或其後盾儲存區