LoadFromMappedFile

文档管理、性能、文件输入

描述

通过有边界的只读映射视图加载并选定本地 PDF,使大型延迟对象和流读取能复用操作系统文件页,而无需把完整源保留在内存中

语法

Delphi

Function TPDFlib.LoadFromMappedFile(Const FileName, Password: WideString;
  WindowSize: Int64= 0; Options: Integer= 0): Integer;

参数

FileName本地 PDF 的路径
Password打开 PDF 所用的密码;未加密文档为空字符串
WindowSize请求的映射视图大小(字节);为 0 时选择 64 MiB,低于操作系统分配粒度的值会提升到该粒度,高于 1 GiB 的值会被封顶
Options为 0 时允许回退到只读文件流;PDF_MAPPED_FILE_REQUIRE_MAPPING 在没有活动映射视图时失败

返回值

0参数无效、文件无法打开、所需的映射不可用,或 PDF 无法加载;请检查 LastErrorCode
1文档已加载并选定

备注

Windows 构建保留一个只读视图,并按需在分配粒度边界处重新映射;其他平台和映射失败时,除非必须映射,否则在普通只读文件流上遵循同样的绝对读取契约

默认 64 MiB 视图独立于源大小地限制地址空间使用,适合对大型本地文件的稀疏访问;更小的视图可以减少常驻地址空间,代价是更多重映射

绝对对象切片读取直接从当前视图复制到解析器所有的存储中,不改变定位流游标;由于重映射会使视图地址失效,这不是持久的零拷贝指针 API

源在加载的文档被移除前保持打开,保存或延迟提取可以继续读取它

若已赋值 OnPassword,每次被拒绝的密码重试都会收到新的映射流和解析器状态

确认映射是否激活并检视当前视图和读取统计,请使用 GetMappedFileInfo