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对齐的区间获取粒度;为 0 时选择 64 KiB 默认值,低于 4096 的值同样使用默认值
CacheLimitBytes最近最少使用窗口间保留的最大字节数;为 0 时选择 4 MiB 默认值,低于一个分块的值会被提升到一个分块
CoalesceWindowMS每次绝对读取首个未缓存分块的收集窗口;默认 2 毫秒,为 0 时禁用初始延迟
AvailabilityCallback可选的非抓取测试,用于判断渐进式存储中已存在的字节区间

返回值

0源参数无效或 PDF 无法加载;请检查 LastErrorCode
1文档已加载并选定

备注

读取回调接收绝对的零基偏移量,向 Buffer 写入的字节不得超过 Count,并返回写入的字节数

由于页面渲染、提取和保存稍后可能请求更多范围,回调目标及其后备存储必须在加载的文档关闭之前保持有效

调用是同步的,可能以非顺序到达;源物理末端接受较短的结果,而意外的零结果会导致加载或当前延迟操作失败

赋值了 AvailabilityCallback 时,只有在不经传输或阻塞 I/O 即可立即读取完整请求范围时才返回非零值

缓存的范围内无论回调结果如何都可用;Nil 回调通过把每个有效源范围都视为可用而保持同步行为

对齐的块避免重叠读取时的重复传输取回,字节预算独立于文档大小地限制保留的载荷

延迟对象与分段读取使用绝对偏移量,因此并发工作共享同块请求并合并相邻排队块,且不改变定位流游标

源回调是串行化的,不得从同一范围流递归读取

测试页面、表单或间接对象依赖而不读取报告为缺失的范围,请使用 GetRangeSourceDataAvailability

观察或更改活动缓存,请使用 GetRangeSourceCacheInfo、SetRangeSourceCacheLimit 和 ClearRangeSourceCache

库拥有其内部可寻址的范围流,但不拥有回调目标或其后备存储