DAOpenFromURL
文档管理、直接访问功能
描述
通过字节范围请求经 HTTP 打开远程 PDF 以进行直接访问
传输层先对 URL 探测一次以确认字节范围支持并获知总长度,随后由可寻址的流驱动既有的随机访问读取器,从而只通过网络取回实际读取的对象
文档已线性化且启用缓存预热时,首页分节会在保留字节预算内预取,因而在触碰文件其余部分之前即可渲染第 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 | 为 0 时采用默认的首页预热打开方式;PDF_NET_OPT_NO_WARMING 表示完全按需打开 |
| ChunkSize | 仅 Delphi;对齐的区间获取粒度,为 0 时选择 64 KiB |
| CacheLimitBytes | 仅 Delphi;保留源字节的上限,为 0 时选择 4 MiB,低于一个分块的值会被提升到一个分块 |
| CoalesceWindowMS | 仅 Delphi;每次绝对读取首个未缓存分块的收集窗口,默认 2 毫秒,为 0 时禁用初始延迟 |
返回值
| >0 | 直接访问文档句柄 |
|---|---|
| 0 | 无法打开文档;LastErrorCode 被设为 PDFLIB_ERROR_NET_OPEN、PDFLIB_ERROR_NET_RANGE_UNSUPPORTED、PDFLIB_ERROR_NET_HTTP,或某个结构/密码错误码 |
备注
服务器必须声明字节范围支持;否则调用会以 PDFLIB_ERROR_NET_RANGE_UNSUPPORTED 快速失败,而不是下载整个文件
请用 DACloseFile 关闭返回的句柄,它同时释放底层传输流
并发的延迟读取共享同一数据块的请求,并把相邻的排队块合并为上限 16 MiB 的源读取
无需打开文档即可检视第 1 页的字节范围布局,请使用 GetLinearizedURLAccessPlan
观察或更改 Delphi 直接访问缓存,请使用 DAGetRangeSourceCacheInfo、DASetRangeSourceCacheLimit 和 DAClearRangeSourceCache