DAOpenFromURL
文件管理、直接存取功能
描述
透過 HTTP 以 byte-range 請求開啟遠端 PDF 進行直接存取
傳輸層先探測一次 URL,確認 byte-range 支援並取得總長度,之後由可定址串流驅動既有的隨機存取讀取器,只有實際讀到的物件才會透過網路抓取
文件為 linearized 且啟用快取預熱時,會在保留位元組預算內預取首頁區段,讓第 1 頁在檔案其餘部分被觸及前就能渲染
語法
Delphi
Function TPDFlib.DAOpenFromURL(Const URL, Password: WideString; Options: Integer= 0; ChunkSize: LongInt= 0; CacheLimitBytes: Int64= 0; CoalesceWindowMS: Cardinal= PDF_NET_DEFAULT_COALESCE_WINDOW_MS): Integer;DLL
int DLDAOpenFromURL(int InstanceID, const wchar_t* URL, const wchar_t* Password, int Options);ActiveX
Function PDFlib::DAOpenFromURL(URL As String, Password As String, Options As Long) As Long參數
| URL | 遠端 PDF 的 http 或 https 位址 |
|---|---|
| Password | 文件密碼;PDF 未加密時為空字串 |
| Options | 零表示預設的預熱首頁開啟,或 PDF_NET_OPT_NO_WARMING 表示純視需求開啟 |
| ChunkSize | 僅 Delphi;對齊的範圍擷取粒度,零表示選用 64 KiB |
| CacheLimitBytes | 僅 Delphi;保留來源位元組上限,零表示選用 4 MiB,低於一個區塊的值會提升為一個區塊 |
| CoalesceWindowMS | 僅 Delphi;每次絕對讀取第一個未快取區塊的彙整視窗,預設為 2 毫秒,零表示停用初始延遲 |
傳回值
| >0 | 直接存取文件控制代碼 |
|---|---|
| 0 | 無法開啟文件;LastErrorCode 會設為 PDFLIB_ERROR_NET_OPEN、PDFLIB_ERROR_NET_RANGE_UNSUPPORTED、PDFLIB_ERROR_NET_HTTP,或結構或密碼相關代碼 |
備註
伺服器必須宣告支援 byte-range;否則呼叫會以 PDFLIB_ERROR_NET_RANGE_UNSUPPORTED 快速失敗,而不會下載整個檔案
請用 DACloseFile 關閉傳回的控制碼,它也會釋放底層傳輸串流
並行的延遲讀取會共用相同區塊的請求,並把相鄰的排隊區塊合併為上限 16 MiB 的來源讀取
請用 GetLinearizedURLAccessPlan 在不開啟文件的情況下檢視第 1 頁的 byte-range 佈局
請用 DAGetRangeSourceCacheInfo、DASetRangeSourceCacheLimit 與 DAClearRangeSourceCache 觀察或調整 Delphi 直接存取快取