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