PDFium Delphi Component Docs

PDFium VCL API 参考

Windows 使用 VCL 或 Lazarus Windows widget set。原生 Free Pascal/LCL 构建在 Linux 使用 Qt6、macOS 使用 Cocoa,并配合匹配的 PDFium 共享库;工具链和运行时要求见原生 LCL 配置。VCL Delphi/C++Builder 包装仍面向 Windows;原生 Delphi macOS 的加密与时间戳 helper 验收独立于可视化包装

辅助单元

单元说明
FPdfAsync为响应式后台 PDF 工作提供结构化取消、可配置 future 和有界优先级工作池
FPdfMatrix为 PDFium 页面对象 API 提供仿射组合、诊断、拟合矩形映射、逆几何、分解以及批量点或矩形变换
FPdfMeasure为 PDF 用户单位的文本布局添加 TPdf.MeasureText、MeasureTextWidth 和 WrapText 辅助方法
FPdfLayout构建分页、带标签、基于网格、Markdown、HTML、表格、图像、链接和可复用节点的布局
FPdfTextShaping通过可扩展的整形器接口和 Windows Uniscribe 实现把双向 Unicode 文本整形为有界的视觉字形运行段
FPdfProduction提供有界的颜色、字体、SVG、替换、XFA、条码、Portfolio 和 RichMedia 生产工作流
FPdfDiff带资源上限的页面对齐、Unicode 文本差异和连通视觉区域
FPdfMerge事务式书签、命名目标和内部链接页面合并,并独立验证重新打开结果
FPdfOcrTesseract可选的 Tesseract OCR 提供器,明确指定依赖和识别上限
FPdfFormMerge事务式 AcroForm 字段合并,支持明确冲突策略
FPdfBarcodeZXing可选的原生条码生成和识别
FPdfStyledEdit已验证的保留样式 PDF 文本替换,支持预览和回滚
FPdfSemanticDiff稳定的注解和表单语义变更,附带变更前后的叠加坐标
FPdfColourLittleCms可选的原生 ICC 转换,处理原始 Gray、RGB 和 CMYK 采样
FPdfDocumentColour带资源上限的 PDF 文档颜色转换,明确报告不支持的对象
FPdfRedaction用于事务式擦除的嵌套 Form、填充路径和仿射图像几何
FPdfStandardsExecution执行测量、GeoPDF、PDF/A 修复、PDF/UA、PDF/X、PAdES 证据、PDF/VT、PDF/E 和 PDF/R 工作流
FPdfAsn1编码、导航、解码并验证有界 ASN.1 DER 数据,支持高标签标识符、类型化值、规范检查和资源限制
FPdfPreflightReport构建可查询的标准报告、PDF/A 修复计划、PDF/X 生产预检、声明式规则、资源预算、隔离并行验证、聚合以及机器可读导出
FPdfBenchmark运行有界的性能与合规性测试集,涵盖加载、首页、渲染、保存、内存、语义、像素和独立重新打开门槛
FPdfXmp读取、编辑并增量写入命名空间感知的有界 XMP 数据包,支持类型化 RDF 值和未知命名空间保留
FPdf standards helpers独立的关联文件、PAdES、PDF/A、PDF/E、PDF/R、PDF/UA、PDF/VT 和 PDF/X 验证与保存 API
FPdfThumbnail提供 TPdfThumbnailView 可滚动缩略图导航控件
FPdfCompress提供流级 FlateDecode 压缩、默认 OpenAction 注入、保存后规范化和 PDF 版本检查,供 TPdf 保存管线使用
FPdfContentNormalize扫描并规范化 PDF 内容序列,包括有界的内联图像处理
FPdfXfdf无需加载 pdfium.dll 即可独立导入导出表单字段和批注的 XFDF
FPdfEditPDFium 页面对象编辑绑定以及独立的 ARGB 颜色辅助函数
FPdfPdfvtMime构建并验证承载内联 PDF/VT 文档、可复用附件和 ICC 配置文件的单文件 PDF/VT-2s MIME part 流
FPdfIccProfile执行有界的 ICC 头部和标签表验证,支持 MD5、SHA-256、配置文件元数据和多语言描述匹配
FPdfEncrypt写入 AESV3-CBC 或 ISO/TS 32003 AESV4-GCM 加密 PDF,并验证 AESV4 兼容性解密
FPdfAes纯 Pascal 实现的 AES-128 和 AES-256 分组密码,含密钥扩展和 AES-256-CBC 流包装器
FPdfHmac纯 Pascal 实现的 HMAC-SHA256、HKDF-SHA256、常量时间字节比较和安全字节清除
FPdfMac构建并验证 ISO/TS 32004 独立 CMS AuthenticatedData 令牌
FPdfAesGcm面向 AES-128 和 AES-256 密钥的纯 Pascal AES-GCM 认证加密
FPdfSha256纯 Pascal 实现的 SHA-256 哈希,提供增量与一次性辅助方法
FPdfSha512纯 Pascal 实现的 SHA-512 和 SHA-384 哈希,共享同一上下文类型
FPdfSha3面向 PDF 2.x 密码扩展的纯 Pascal SHA3-256、SHA3-384、SHA3-512 和流式 SHAKE256 哈希
FPdfCms从分离摘要和 ICmsSigner 密码后端构建 RFC 5652 CMS 与 CAdES SignedData
FPdfTsa面向 PAdES B-T 和 B-LTA 档案的 RFC 3161 时间戳权威客户端
FPdfTsaWin面向 RFC 3161 请求的 Windows WinHttp 时间戳传输后端
FPdfTsaFpc在 Linux 和 macOS 上用 libcurl 发送 RFC 3161 时间戳请求的传输实现
FPdfTsaPosix用于带上限 RFC 3161 时间戳请求的原生 Delphi POSIX HTTP 传输
FPdfCrypto基于活动密码后端的 PAdES 签名者解析门面
FPdfTrustedList经过认证的欧洲信任列表解析、缓存、更新、信任锚点和合格服务评估
FPdfCryptoWin面向 CNG 签名、分离 CMS 验证、签名者证书提取和仅缓存系统信任评估的 Windows 后端
FPdfCryptoMacmacOS 后端:使用 Keychain 身份签名,并通过 CMSDecoder 与 SecTrust 验证 CMS
FPdfCryptoSsl显式 OpenSSL 签名凭据、独立 CMS 验证、受限 OCSP/CRL 证据及每签名者诊断;未检查 OCSP 响应或响应者时,保留此前的 CRL 判定
FPdfCryptoOcsp原生响应者认证前的受限 OCSP DER 和时效预过滤
FPdfPkcs11PKCS#11 令牌签名后端,在所有平台上都把私钥留在令牌内部
FPdfSha1纯 Pascal 实现的 SHA-1,只用于按指纹匹配证书,绝不用作签名摘要
FPdfBidiUnicode 双向算法(UAX #9)解析与视觉重排,不依赖任何平台
FPdfTextShapingHb面向没有 Uniscribe 的平台的 HarfBuzz 文本整形后端

TPdf 组件方法

文档管理

方法说明
CreateDocument创建一个新的空白 PDF 文档
LoadDocument(Data: TMemoryStream; Buffered: Boolean = True)从内存流加载 PDF 文档
LoadDocument(Data: Pointer; Size: Integer; Buffered: Boolean = True)从内存缓冲区加载 PDF 文档
LoadDocument从 FileName 加载 PDF 文档
LoadDocument(const Data: TBytes; Buffered: Boolean = True)从 TBytes 加载 PDF 文档
LoadCustomDocument(AStream: TStream; AOwnsStream: Boolean = False)通过 FPDF_LoadCustomDocument 从任意 TStream 流式加载 PDF 文档;PDFium 按需拉取数据块,而不是把整个文件复制到内存中;AOwnsStream = True 时,流的生命周期由 TPdf 实例接管
TPdfLoadOptions, TPdfLoadReport, LastLoadReport选择兼容、严格或恢复式加载,并检查有界的 xref 审计证据
SaveAsRepaired写入完整的单修订版副本,并在交付前独立进行严格加载验证
TPdfRandomAccessStore线程安全的可定位存储,支持定位 I/O,并可将有界内存单向溢出到私有的关闭即删除临时存储
SaveMemoryLimit, SaveTemporaryDirectory, LastSaveSpillCount, LastSaveLargestMemoryBuffer配置并度量 TPdf 保存暂存所使用的有界工作存储
SaveAs(Stream: TStream; Option: TSaveOption = saNone; PdfVersion: TPdfVersion = pvUnknown): Boolean将文档保存到流,支持可选压缩以及显式 PDF 1.3 到 PDF 1.7 一致性检查;加密文档的显式版本输出以及 pv13 搭配 saIncremental 会抛出 EPdfError
SaveAs(const FileName: string; Option: TSaveOption = saNone; PdfVersion: TPdfVersion = pvUnknown): Boolean以原子方式将文档保存到文件,支持可选压缩以及显式 PDF 1.3 到 PDF 1.7 一致性检查;规范化或验证失败时既有目标文件保持不变
SaveAsLinearized(Stream: TStream; Option: TSaveOption = saNone; PdfVersion: TPdfVersion = pvUnknown): Boolean写入附录 F Fast Web View 输出,包含首页分组以及经过验证的页偏移和共享对象提示表
SaveAsLinearized(const FileName: string; Option: TSaveOption = saNone; PdfVersion: TPdfVersion = pvUnknown): Boolean通过同目录临时文件以原子方式写入 Fast Web View 输出
SaveAsObjectStream(Stream: TStream; Option: TSaveOption = saNone; PdfVersion: TPdfVersion = pvUnknown; MaxObjectsPerStream: Integer = 100; MaxDecodedBytesPerStream: Integer = 65536): Boolean写入有界的 PDF 1.5+ 对象流,并生成完整的 type-2 xref 流
SaveAsObjectStream(const FileName: string; Option: TSaveOption = saNone; PdfVersion: TPdfVersion = pvUnknown; MaxObjectsPerStream: Integer = 100; MaxDecodedBytesPerStream: Integer = 65536): Boolean通过同目录临时文件以原子方式写入现代对象流输出
SaveAsNormalizedContent(Stream: TStream; out Report: TPdfContentNormalizeReport; const Options: TPdfContentNormalizeOptions; SaveOption: TSaveOption = saNoIncremental; PdfVersion: TPdfVersion = pvUnknown): Boolean写入经过规范化和合并的逻辑页面内容,并执行有界的语法验证
SaveAsNormalizedContent(const FileName: string; out Report: TPdfContentNormalizeReport; const Options: TPdfContentNormalizeOptions; SaveOption: TSaveOption = saNoIncremental; PdfVersion: TPdfVersion = pvUnknown): Boolean通过同目录临时文件以原子方式写入规范化内容输出
SaveAsReachable(Stream: TStream; out Report: TPdfPruneReport; AllowSignedDocument: Boolean = False): Boolean把文档重写为单一干净修订版,仅保留从 catalog 和 trailer /Info 可达的对象
SaveAsReachable(const FileName: string; out Report: TPdfPruneReport; AllowSignedDocument: Boolean = False): Boolean通过同目录临时文件以原子方式写入精简后的单修订版副本
SaveAsDeduplicated(Stream: TStream; out Report: TPdfDedupReport; AllowSignedDocument: Boolean = False): Boolean重写文档时清扫不可达对象,并把兼容的字体、图像和表单 XObject 合并到单一代表对象
SaveAsDeduplicated(const FileName: string; out Report: TPdfDedupReport; AllowSignedDocument: Boolean = False): Boolean通过同目录临时文件以原子方式写入去重后的单修订版副本
SaveAsFlateRecompressed(Stream: TStream; const Options: TPdfFlateRecompressOptions; out Report: TPdfFlateRecompressReport; AllowSignedDocument: Boolean = False): Boolean重写文档,当节省量超过调用方阈值时以最大压缩率重新编码 FlateDecode 流
SaveAsFlateRecompressed(const FileName: string; const Options: TPdfFlateRecompressOptions; out Report: TPdfFlateRecompressReport; AllowSignedDocument: Boolean = False): Boolean通过同目录临时文件以原子方式写入 Flate 重压缩副本
SaveAsInlineImagesExternalised(Stream: TStream; const Options: TPdfInlineImageExternaliseOptions; out Report: TPdfInlineImageExternaliseReport; AllowSignedDocument: Boolean = False): Boolean重写文档,把 BI/ID/EI 内联图像提取为可复用 XObject,并用 Do 算子替换内联块
SaveAsInlineImagesExternalised(const FileName: string; const Options: TPdfInlineImageExternaliseOptions; out Report: TPdfInlineImageExternaliseReport; AllowSignedDocument: Boolean = False): Boolean通过同目录临时文件以原子方式写入外部化副本
SaveAsReproducible(Stream: TStream; out Report: TPdfReproducibleReport; AllowSignedDocument: Boolean = False): Boolean重写文档时剥离非确定性时间戳和 /ID,使重复保存产生逐字节相同的结果
SaveAsReproducible(const FileName: string; out Report: TPdfReproducibleReport; AllowSignedDocument: Boolean = False): Boolean通过同目录临时文件以原子方式写入可复现副本
ExportObjectGraph(Stream: TStream; const Options: TPdfObjectGraphInspectOptions; out Report: TPdfObjectGraphReport): Boolean把活动的直接值和对象流值导出为有界类型化 JSON,并可选附带编码流的 SHA-256 摘要
SaveAsObjectGraphPatched(Stream: TStream; const Operations: TPdfObjectPatchOperations; out Report: TPdfObjectGraphReport; AllowSignedDocument: Boolean = False): Boolean应用事务性的类型化顶层字典补丁,并在交付前对暂存结果进行严格加载验证
SaveAsObjectGraphPatched(const FileName: string; const Operations: TPdfObjectPatchOperations; out Report: TPdfObjectGraphReport; AllowSignedDocument: Boolean = False): Boolean在完整的对象图补丁事务成功后以原子方式替换文件
ExportObjectGraph / SaveAsObjectGraphPatched object-graph envelope两种方法共享的对象图检查与补丁模型页,涵盖带版本的 pdf-object-graph-v1 信封和经严格加载验证的事务性补丁
InspectOptionalContent(out Inventory: TPdfOptionalContentInventory; Usage: TPdfOptionalContentUsage = ocuView; ConfigurationIndex: Integer = -1): Boolean读取可选内容模型和生效的原生渲染状态
SaveAsOptionalContentConfigured(Stream: TStream; const Changes: TPdfOptionalContentStateChanges; const Options: TPdfOptionalContentConfigureOptions; out Report: TPdfOptionalContentConfigureReport; AllowSignedDocument: Boolean = False): Boolean写入调用方所选的可选内容状态并进行严格验证
BeginEditTransaction(const LabelText: WString = ''; AllowSignedDocument: Boolean = False)基于可复现的原生快照启动原子文档编辑事务
CommitEditTransaction: Boolean把变更事务存储为有界的 SHA-256 链式双向增量
RollbackEditTransaction恢复事务前的文档,不添加撤销条目
BeginPageObjectEditTransaction(AllowSignedDocument: Boolean = False)启动原子化的页面级原生对象修改批次
CommitPageObjectEditTransaction: Boolean一次性生成页面内容并提交所有成功的原生修改
RollbackPageObjectEditTransaction恢复经过验证的批次前文档快照
PageObjectEditTransactionStatus: TPdfPageObjectEditTransactionStatus报告事务状态、页面、修改计数和内容生成计数
BeginPageObjectEditTransaction / CommitPageObjectEditTransaction / RollbackPageObjectEditTransaction / PageObjectEditTransactionStatus原子化的页面级编辑事务模型,涵盖有界快照、批量原生修改、单次内容重新生成和回滚
UndoEdit: Boolean在当前日志位置应用并验证逆向增量
RedoEdit: Boolean在当前日志位置之后应用并验证正向增量
EditCanUndo: Boolean报告已提交的文档事务是否可以撤销
EditCanRedo: Boolean报告已撤销的文档事务是否可以重做
ClearEditJournal释放已提交的编辑历史,同时保留当前文档状态
ConfigureEditJournal(const Options: TPdfEditJournalOptions)设置条目、存储增量和快照限制
GetEditJournalInfo: TPdfEditJournalInfo读取日志位置、标签、指纹、限制使用情况以及撤销或重做可用性
ExportEditJournal(Stream: TStream)写入可移植的有界日志格式
ImportEditJournal(Stream: TStream; ApplyRecordedPosition: Boolean = True; AllowSignedDocument: Boolean = False)仅针对根指纹或记录指纹验证并重放日志
SaveRecoverySnapshot写入包含源指纹和已验证编辑日志的带校验和恢复包
RestoreRecoverySnapshot在校验和、源、日志和结果全部验证通过后才恢复恢复包
InspectRecoverySnapshot读取恢复元数据并验证恢复包,但不应用编辑
EnableRecoveryAutosave(const FileName: string)在提交、撤销或重做后以原子方式刷新显式恢复文件
DisableRecoveryAutosave停止由提交触发的恢复写入,但不删除既有恢复包
RecoveryAutosaveFileName: string读取恢复自动保存的绝对路径,未启用时返回空字符串
ValidatePagePlan(const Plan: TPdfPagePlan; ImportedSource: TPdf = nil; AllowSignedDocument: Boolean = False): TPdfPagePlanValidationReport把页面操作编译为精确的新旧映射,并报告导航、标签、表单、结构、导入特性和签名影响,且不改动任一文档
GenerateLayout(Layout: TPdfLayoutDocument; out Plan: TPdfLayoutPlan; AllowSignedDocument: Boolean = False): Boolean先测量和分页,再以原子方式追加原生文本、标尺线、表格边框、图像、页面和可复用页面 XObject,并保持稳定的页面总数
GeneratePagedLayout(Layout: TPdfLayoutDocument; PagedPlan: TPdfLayoutPagedPlan; out Plan: TPdfLayoutPlan; AllowSignedDocument: Boolean = False): Boolean把命令流式写入可定位存储,一次具体化一个有界页面数组,并顺序追加 PDFium 页面
GenerateTaggedLayout(Layout: TPdfLayoutDocument; out Plan: TPdfLayoutPlan; const Language: string = 'en-US'): Boolean生成新的语义布局文档,包含原生 MCID、完整的结构和父树、替换文本、表头关联以及带标签链接
TPdfLayoutDocument.AddLink / AddSemanticNode / SetLastItemSemantics为布局条目附加 URI 链接、非视觉语义容器,以及角色、父节点、ID、语言、替换文本、列表和表格元数据
TPdfLayoutDocument.AddTable(Table: TPdfLayoutTable)对包含题注、重复表头、可拆分行、合并单元格、链接、边框和连续标签语义的表格进行快照和分页
TPdfLayoutDocument.AddCachedNode(Node: TPdfLayoutCachedNode; Height: Single = 0; Width: Single = 0)构建惰性节点一次,缓存其测量计划,并从单一原生 Form XObject 模板发出重复放置
BeginIncrementalSave(AllowSignedDocument: Boolean = False)基于稳定的语义快照启动脏对象修订会话,同时精确保留加密或未加密的源前缀
CommitIncrementalSave(Stream: TStream; out Info: TPdfIncrementalCommitInfo): Boolean只追加变更或新增的间接对象,继承加密安全参数并验证完整修订链
CommitIncrementalSave(const FileName: string; out Info: TPdfIncrementalCommitInfo): Boolean通过同目录旁文件持久刷新、重新打开、验证并以原子方式替换,失败时回滚会话状态
EndIncrementalSave释放基线和累积的修订状态
SaveAsEncrypted(const FileName: string; const Options: TPdfEncryptOptions): Boolean以 AESV3-CBC 或 ISO/TS 32003 AESV4-GCM 加密保存当前 PDF
SaveAsEncryptedToStream(Stream: TStream; const Options: TPdfEncryptOptions): Boolean把加密 PDF 输出写入任意可定位 TStream,而不经过磁盘中转
ValidatePdfMac(const Password: AnsiString): TPdfMacValidationResult针对原始加载的源字节验证 ISO/TS 32004 独立 PDF MAC
SaveAsWithAssociateFiles(const FileName: string; const Options: TAssocFilesOptions): Boolean把当前 PDF 保存到文件路径,并按照 ISO 32000-2 §7.11.4 把关联文件注入 catalog 或页面
SaveAsWithAssociateFilesToStream(Stream: TStream; const Options: TAssocFilesOptions): Boolean把带注入关联文件的 PDF 输出写入任意可定位 TStream,而不经过磁盘中转
CompareWith(Other: TPdf; const Options: TPdfDocumentDiffOptions; out Report: TPdfDocumentDiffReport): Boolean比较页数、几何、旋转、提取的文本和带容差的渲染像素
ImportImposed(const Options: TPdfImpositionOptions; out Plan: TPdfImpositionPlan; out Report: TPdfImpositionExecutionReport): TPdf通过批量原生 PDFium 合成构建 N-up 或小册子输出,并报告执行计数
ImportPages(Pdf: TPdf; const Range: string; PageNumber: Integer = 1): Boolean从另一个 PDF 文档导入页面。范围格式:'1,3,5-7'
ImportPreferences(Pdf: TPdf): Boolean从另一个 PDF 导入查看器首选项

页面操作

方法说明
AddPage(PageNumber: Integer; Width, Height: Double)在指定的从 1 开始计数的位置按给定尺寸(单位为点,72 点 = 1 英寸)添加新页面。传入 0 会作为插入首页的兼容别名被接受,且插入的页面会成为当前页面
DeletePage(PageNumber: Integer)删除指定索引处的页面
ExtractThumbnail(PageNumber: Integer): TBitmap解码任意从 1 开始计数页面的内嵌缩略图,不改变活动页面
GetPageBox(Box: TPdfPageBox): TPdfRectangle从当前页面读取所选页面字典框
RemoveObject(Index: Integer; DestroyObject: Boolean = True)从当前页面移除一个页面对象并重新生成页面内容
ReloadPage重新加载当前页面
SetPageBox(Box: TPdfPageBox; const Rectangle: TPdfRectangle)在当前页面上设置所选页面字典框
UpdatePage将待定更改应用到当前页面(调用 FPDFPage_GenerateContent)

文本操作

方法说明
Text(StartIndex: Integer = 0; Count: Integer = MaxInt): WString从当前页面提取文本
TextInRectangle(Left, Top, Right, Bottom: Double): WString从矩形区域提取文本(页面坐标)
TextInRectangle(Rectangle: TPdfRectangle): WString从矩形提取文本
ReadTextPageSnapshot(PageNumber: Integer; const Options: TPdfTextSnapshotOptions; out Status: TPdfTextSnapshotStatus): TPdfTextPageSnapshot在单次显式有界的原生遍历中捕获文本、Unicode、几何、样式和规范化文本对象元数据
TextPageSnapshot[PageNumber: Integer]: TPdfTextPageSnapshot从修订感知的文本快照 LRU 返回调用方拥有的深拷贝,不改变活动页面
TextSnapshotCacheCapacity, TextSnapshotCacheCount, TextSnapshotCacheHitCount, TextSnapshotCacheMissCount配置有界的保留策略,并报告缓存占用、命中和未命中情况
TPdfTextPageSnapshot / TPdfTextSnapshotStatus调用方拥有的文本快照记录与有界读取状态模型,以及修订感知的 LRU 缓存行为
ReadPageObjectsSnapshot(PageNumber: Integer; const Options: TPdfPageObjectSnapshotOptions; out Status: TPdfPageObjectSnapshotStatus): TPdfPageObjectsSnapshot在显式预算下捕获不可变的页面对象几何、样式、标记、裁剪、图像事实和文本事实
PageObjectsSnapshot[PageNumber: Integer]: TPdfPageObjectsSnapshot从修订感知的页面对象快照 LRU 返回调用方拥有的深拷贝
PageObjectSnapshotCacheCapacity, PageObjectSnapshotCacheCount, PageObjectSnapshotCacheHitCount, PageObjectSnapshotCacheMissCount配置有界的页面对象保留策略,并报告缓存占用、命中和未命中情况
TPdfPageObjectsSnapshot / TPdfPageObjectSnapshotStatus调用方拥有的页面对象快照记录与有界读取状态模型,以及修订感知的 LRU 缓存行为
GetStructuredText(const Options: TPdfStructuredTextOptions): TPdfStructuredTextPage构建有界的页面、块、行和样式跨度模型,包含原生字符几何和可选的语义增强
ExtractTables(const Options: TPdfTableExtractionOptions): TPdfTables检测当前页面上的划线和空白对齐表格,支持合并单元格、置信度以及 CSV 和 JSON 输出
ExtractDocumentTables(const Options: TPdfTableExtractionOptions): TPdfTables跨每一页提取有界表格,并标记匹配的跨页延续链
BuildReflowDocument(const Options: TPdfReflowOptions; const CancellationToken: IPdfCancellationToken = nil): TPdfReflowDocument构建有界的语义页面树,并输出响应式、已转义的 HTML,包含标题、段落、列表、插图和跨度感知表格
ApplyOcrSearchLayer(Provider, Options, Report, CancellationToken): Boolean通过 PDFium 渲染所选页面,并添加经过置信度过滤的不可见 OCR 文本,不重新编码页面图像
AddText(const Text, Font: WString; FontSize: Single; X, Y: Double; Color: TColor = clBlack; Alpha: Byte = $FF; Angle: Double = 0.0)在指定位置添加文本,可指定字体、颜色、透明度和旋转角度
SetText(ObjectIndex: Integer; const Text: WString)为既有文本对象设置文本(未公开的 PDFium API,可能导致格式问题)
SetTextPositions(ObjectIndex: Integer; const Positions: TPdfSingleArray)为既有文本对象设置逐字符位置。位置从第二个字符开始,且相对于文本对象原点
FindFirst(const Text: WString; Options: TSearchOptions = []; StartIndex: Integer = 0; DirectionUp: Boolean = True): Integer启动文本搜索,返回字符索引,未找到时返回 -1
FindNext: Integer向前继续文本搜索,返回字符索引或 -1
FindPrevious: Integer向后继续文本搜索,返回字符索引或 -1
CreateDocumentSearch(Text, Options, StartPage, Direction, CancellationToken): TPdfDocumentSearch创建惰性的正向或反向全文档搜索,支持单页原生句柄保留、取消和逐匹配几何信息
CharacterIndexAtPos(X, Y, ToleranceX, ToleranceY: Double): Integer获取页面位置处的字符索引
RectangleCount(StartIndex: Integer = 0; Count: Integer = MaxInt): Integer获取字符范围的文本矩形数量
ReadingUnits: TPdfReadingUnits返回句子级阅读单元,用于辅助听读和语义导航
DocumentReadingUnits: TPdfReadingUnits为整个文档可读内容流构建句子级 TPdfReadingUnit 记录
PageWordBoxes: TPdfWordBoxes返回带 FTextPage 范围和页面空间矩形的单词框,用于逐词高亮
SetReadingWord(const Word: TPdfWordBox)在 TPdfView 上把一个 TPdfWordBox 高亮为当前朗读单词
ClearReadingWord清除 TPdfView 上当前的单词级阅读光标叠加层
TrackReadingWordAt(PageNumber, CharIndex: Integer): Integer把页面字符偏移映射到包含它的 TPdfWordBox,高亮该框并返回单词索引
SelectWordBox(const Word: TPdfWordBox): Boolean选择一个 TPdfWordBox 所表示的查看器文本范围
SelectWordSpan(const Words: TPdfWordBoxes; StartIndex, EndIndex: Integer): Boolean把同一页面上的 TPdfWordBox 记录跨度选择为一个查看器文本选区
BuildReadingUnits(Fragments)把 TPdfContentFragments 转换为句子级 TPdfReadingUnit 记录,无需加载 pdfium.dll
NextReadingUnitOfKind(Units, CurrentIndex, Kind, GoForward)查找 Kind 与请求的 TPdfContentFragmentKind 匹配的下一个或上一个 TPdfReadingUnit
BuildWordBoxes(PageText)把页面文本拆分为带单词文本和 FTextPage 字符范围的 TPdfWordBox 记录
WordBoxIndexAtCharIndex(Words, CharIndex)把字符索引映射回包含它的从 0 开始计数的 TPdfWordBox 索引
SpokenTextAppend(var Spoken: TPdfSpokenText; const SpokenPart: WString; Page, StartIndex: Integer; SourceCount: Integer = -1)向 TPdfSpokenText 追加一段已映射的朗读文本
BuildSpokenTextFromWords(Words, FirstWord, LastWord)从连续的 TPdfWordBox 范围构建 TPdfSpokenText
SpokenToPageChar(Spoken, SpokenOffset, Page, CharIndex)把语音引擎的字符偏移转换回 PDF 页面字符
EstimateSpokenWordIndex(Words, ElapsedMs, WordsPerMinute)当语音引擎未报告单词位置时估算朗读单词索引

注释操作

方法说明
CreateAnnotation(const Annotation: TPdfAnnotation)在当前页面创建新批注
DeleteAnnotation(Index: Integer)删除指定索引处的批注

表单扁平化

方法说明
GenerateFormAppearances为每一页上的每个表单控件重新生成 /AP 外观流(FPDF_FFLDraw)。请在 FormField[] 赋值之后、SaveAs / FlattenPage / FlattenAllPages 之前调用
FlattenPage(nFlag: Integer = FLAT_NORMALDISPLAY): Integer把当前页面上的批注和表单控件扁平化为静态内容。返回 FLATTEN_SUCCESS、FLATTEN_NOTHINGTODO 或 FLATTEN_FAIL
FlattenAllPages(nFlag: Integer = FLAT_NORMALDISPLAY): Boolean扁平化文档中的每一页。所有页面都成功时返回 True
SetFormFieldFlags(Index: Integer; const Flags: TPdfFormFieldFlags)为当前页面上指定批注索引处的表单字段设置 AcroForm 字段标志
SetFormFieldFlagsAt(X, Y: Single; const Flags: TPdfFormFieldFlags)为指定页面坐标处的表单字段设置 AcroForm 字段标志

XFA 操作

v3.125.3 的普通 Windows 库把最终缓冲写入失败报告为保存失败,与 v3.125.2 的 V8 修复一致。Windows V8 库在数据包数组和受支持单流 XDP 保存中保留编辑过的文本,包括原始空白和增补 Unicode。v3.126.0 起,受支持单流 XDP 还会保留被替换活动数据集和表单数据包之外的注释与处理指令,包括 UTF-8 和带 BOM 的 UTF-16 输入;无效输入编码、不完整标签、无效实体引用、畸形处理指令、被替换数据包内的注释或处理指令、DTD 声明和 XMLDSig 一律拒绝。这些是有界的保存防护,不是完整的 XML 校验器。其他受支持的数据包和根命名空间按语义保留;任意外部形态的一致性与逐字节相同的 XML 序列化不在验证范围内

v3.126.0 起,Windows 查看器的复制、剪切和表单粘贴使用有界的 100ms 剪贴板打开重试预算,且不泵 UI 消息;剪贴板访问仍不可用时照常返回失败,剪切失败会保留字段原文本和选区

v3.126.1 起,动态 XFA 的页面增删依据已完成布局的实际总页数更新 TPdf.PageCount 和 OnXfaPageCountChanged,不再把原生事件的增量当作总数

v3.126.2 起,完整 XFA 查看在默认文本选择设置下安全可用,键盘输入时替换字段选中文本,动态布局回调返回后刷新页面句柄;只读字段和 AllowFormEvents 的输入限制保持不变

v3.126.2 的 Windows V8 保存防护在改动单流 XDP 前校验属性语法、重复属性、限定名、命名空间作用域和 XML 声明;XML schema、DTD、XMLDSig、XML 1.1 和增补平面名称仍不在支持范围内

AnalyzeSignatureRevisions 把页面所有权与小部件导航链接分开,为共享外观 payload 保留页面内容上下文,防止后续页面编辑被当作许可的表单或注释更新

v3.126.1 的 Windows V8 库还会在动态布局移动字段时刷新已加载输入小部件的几何信息,让文本和原生输入命中区域对齐到新位置。必需的仓库 fixture 通过原生事件验证实例的添加、移除和高度变化;任意外部表单和前台查看器输入仍是另外的验收工作

方法说明
GetXfaConfig从 PDF 文档检索 XFA config 数据包的原始 XML 字节
GetXfaDatasets从 PDF 文档检索原始的 XFA datasets XML 字节
GetXfaFormPackets把所有内嵌 XFA 数据包快照到 TXfaPacketList 集合
GetXfaPacketByName返回按名称标识的 XFA 数据包的原始内容字节
GetXfaPacketContent返回给定从 0 开始索引处的 XFA 数据包原始内容字节
GetXfaPacketCount返回文档中内嵌的 XFA 数据包数量
GetXfaPacketName返回给定从 0 开始索引处的 XFA 数据包名称
GetXfaTemplate从 PDF 文档检索 XFA template 数据包的原始 XML 字节

附件操作

方法说明
CreateAttachment(const Name: WString): Boolean创建新的空附件
DeleteAttachment(Index: Integer): Boolean删除指定索引处的附件

图像操作

方法说明
AddJpegImage(JpegImage: TStream; X, Y, Width, Height: Double): Boolean从流中按指定位置和大小添加 JPEG 图像
AddPicture(Picture: TPicture; X, Y: Double)在指定位置添加图像(原始尺寸)
AddPicture(Picture: TPicture; X, Y, Width, Height: Double)按指定尺寸在指定位置添加图像
AddImage(const FileName: string; X, Y, Width, Height: Double)直接插入图像文件(通过临时 TPicture 委托给 AddPicture);接受向 VCL 或 LCL 图形单元注册的任何图像格式
AddImage(Bitmap: TBitmap; X, Y, Width, Height: Double)直接插入 pf32bit TBitmap,不经过 TPicture 中介;位图为 nil 时抛出 EPdfError

绘图操作

方法说明
CreatePath(X, Y: Single; FillMode; FillColor; FillAlpha; Stroke; StrokeColor; StrokeAlpha; StrokeWidth; LineCap; LineJoin; BlendMode)创建从位置 (X, Y) 开始的路径
CreatePath(X, Y, Width, Height: Single; ...)创建具有给定边界的矩形路径
MoveTo(X, Y: Single)把当前点移动到 (X, Y)
LineTo(X, Y: Single)从当前点绘制直线到 (X, Y)
BezierTo(X1, Y1, X2, Y2, X3, Y3: Single)用两个控制点和一个端点绘制贝塞尔曲线
ClosePath闭合当前子路径
AddPath把完成的路径添加到当前页面

渲染

方法说明
RenderPage(DeviceContext: HDC; Left, Top, Width, Height: Integer; Rotation; Options)把页面渲染到设备上下文(HDC)
RenderPage(Left, Top, Width, Height: Integer; Rotation; Options; Color): TBitmap渲染页面到新位图
RenderPage(Bitmap: TBitmap; Left, Top, Width, Height: Integer; Rotation; Options; Color)渲染页面到既有位图
RenderPageByIndex(PageNumber, Width, Height: Integer; Rotation; Options; Color): TBitmap以精确尺寸渲染任意页面而不改变活动页面,并复用已解析的页面场景
RenderPageSkia(Canvas, Width, Height, DrawFormOverlay)当加载的 PDFium 模块暴露 Skia 时,把活动页面和可选表单叠加层渲染到调用方拥有的 SkCanvas
RenderPageSkiaByIndex(Canvas, PageNumber, Width, Height, DrawFormOverlay)通过有界的已解析页面场景缓存把任意页面渲染到 Skia,不改变活动页面
SpotPlates / RenderSpotPlate / PageUsesOverprint / RenderOverprintPreview通过能力门控的可选打印输出 ABI 枚举并渲染精确的印刷分色版或叠印预览
GetSkiaRenderCapabilities / GetPrintOutputCapabilities探测可选的原生渲染导出,而不把它们变成 PDFium DLL 的加载前提
RenderPageThumbnail(PageIndex, MaxWidth, MaxHeight, Rotation, Options, Background, ColorScheme): TBitmap把任意从 1 开始计数的页面渲染到调用方拥有的缩略图位图,支持可选旋转、标志、背景和低视力配色,不改变 PageNumber
ThumbnailCacheMaxEntries / ThumbnailCacheMaxBytes / ThumbnailCacheStatistics / ClearThumbnailCache按条目数和像素字节上限约束内嵌与渲染缩略图的保留,并检查 LRU 遥测数据
ClearPageSceneCache释放所有未使用的已解析页面场景,并在进行中的渲染完成时退役相应条目
RenderPagesParallel(PageNumbers; Options; CancellationToken): TPdfParallelRenderReport通过共享同一不可变内存、映射文件或原生随机访问源的隔离工作文档,并发渲染多个从 1 开始计数的页面请求
RenderPageBandedToEncoder(Width, Height, BandHeight; Encoder): TPdfBandedImageReport把正确裁剪的页面条带提供给调用方编解码器,无需拼装整页位图
RenderPageBandedToStream(Stream, Width, Height, StreamOptions): TPdfBandedImageReport以有界条带内存和可选输出字节上限写入只向前的 PNG 或 TIFF 输出
RenderDiffOverlay(Other: TPdf; const Difference: TPdfPageDifference; const Options: TPdfDocumentDiffOptions): TBitmap把 CompareWith 返回的一个 TPdfPageDifference 渲染成调用方拥有的叠加位图
RenderTile(Left, Top, Width, Height, PageWidth, PageHeight: Integer; ...): TBitmap把页面的一个图块(局部)渲染到新位图
RenderTile(Bitmap: TBitmap; Left, Top, Width, Height, PageWidth, PageHeight: Integer; ...)把图块渲染到既有位图
InvertPdfBitmap(Bitmap)就地反转已渲染 32 位 TBitmap 的 RGB 通道,用于深色模式或高对比度查看
GrayscalePdfBitmap(Bitmap)把已渲染的 32 位 TBitmap 就地转换为亮度灰度
DuotonePdfBitmap(Bitmap, DarkColor, LightColor)把已渲染位图的亮度就地映射到调用方选择的深色和浅色

坐标转换

方法说明
DeviceToPage(X, Y, Left, Top, Width, Height: Integer; Rotation: TRotation; out PageX, PageY: Double): Boolean设备坐标转换为页面坐标
PageToDevice(PageX, PageY: Double; Left, Top, Width, Height: Integer; Rotation: TRotation; out X, Y: Integer): Boolean页面坐标转换为设备坐标

PAdES 数字签名

方法说明
PadesCryptoAvailable指示系统上签名密码后端是否可用
AnalyzeSignatureRevisions依据每个签名的 DocMDP 和 FieldMDP 权限对后续原始字节修订进行分类
BuildPadesEvidenceReport(Options)把原生签名事实、信任、时间戳、策略、DSS/VRI 覆盖和后续修订关联为有界的 JSON 或 CSV 证据
PreparePadesRemoteSignature(Prepared; Options; out Request)为 HSM、云端或中断工作流准备绑定指纹的分离签名占位符,支持可选的 seed 值、证书、FieldMDP 和 DocMDP 约束
CompletePadesRemoteSignature(Prepared; Dest; Request; CmsDer)用返回的分离 CMS 值验证并填充持久化的远程签名会话
SavePadesRemoteSigningRequest(Stream; Request)序列化带版本的远程签名请求以便稍后恢复
LoadPadesRemoteSigningRequest(Stream)加载并验证持久化的远程签名请求
RenewPadesArchiveTimestamp(FileName; Options; out Report)追加新的存档 Document Time-stamp,不修改先前已签名的修订
RenewPadesArchiveTimestampToStream(Stream; Options; out Report)在完整验证后把续期的 B-LTA 链写入流
SaveAsPadesDss(const FileName: string; const Options: TPadesDssOptions)保存当前 PDF,包含去重的 PAdES DSS 材料和签名专属 VRI 字典
SaveAsPadesDssToStream(Stream: TStream; const Options: TPadesDssOptions)把当前 PDF 保存到流,包含去重的 PAdES DSS 材料和签名专属 VRI 字典
SignPades(const FileName: string; const Options: TPadesSignOptions)使用本地证书存储追加带约束的审批或认证 PAdES 签名
SignPadesToStream(Stream: TStream; const Options: TPadesSignOptions)把带约束的审批或认证 PAdES 签名更新写入流
SignPadesWithPdfA(const FileName: string; const Options; PdfAOptions)保存符合 PDF/A 归档标准的已签名 PAdES PDF 文档
ValidatePades检查原始字节的 PAdES 结构,拒绝含糊的必需键,证明精确的 Contents 令牌排除范围,并报告覆盖的修订、密码状态、ISO/TS 32002 算法档案、基线级别和结构问题
ValidatePadesTrust(Options)验证原始字节签名完整性、当前系统信任、可选吊销证据和 RFC 3161 时间戳令牌
ValidatePadesTrustAsync(Options; Reply)在工作线程上运行分阶段信任验证,支持进度和取消

TPdf 组件属性

已发布属性(设计期)

属性类型说明
Aboutstring组件版本信息(stored False)
ActiveBoolean设为 True 加载/激活文档,设为 False 关闭文档
FileNamestring要加载的 PDF 文件路径
FormFillBoolean启用带 JavaScript 支持的交互式表单填写(默认 True)
PageNumberInteger当前页码(从 1 开始计数,未加载文档时为 0)
Passwordstring打开加密 PDF 文档的密码

文档属性

属性类型读/写说明
AuthorWStringR文档作者
CompressedBooleanR/W为 True(默认)时,SaveAs 会对输出进行后处理,确保所有流都经过 FlateDecode 压缩
CreationDateWStringR文档创建日期元数据
CreatorWStringR创建文档的应用程序
DocumentFPDF_DOCUMENTR底层 PDFium 文档句柄
FileIdentifier[IDType: TPdfFileIdentifierType]TBytesR不带 PDFium 结束符字节的常驻或变化 trailer 文件标识符字节
FormTypeTPdfFormTypeR表单类型:ftNone、ftAcroForm、ftXFAFull、ftXFAForeground
IsTaggedBooleanR文档为带标签 PDF 时为 True
JavaScriptAction[Index]TPdfJavaScriptActionR按从 0 开始索引的文档级 JavaScript 名称树动作
JavaScriptActionCountIntegerR文档级 JavaScript 名称树动作的数量
JavaScriptActionsTPdfJavaScriptActionsR所有文档级 JavaScript 名称树动作
KeywordsWStringR文档关键词
LanguageWStringR/W文档 catalog 语言(/Lang)
StructureElementsTPdfStructureElementsR通过共享快照缓存获取当前页面扁平化的逻辑结构元素
StructureElementsForPage[PageNumber]TPdfStructureElementsR任意从 1 开始计数页面的调用方拥有的缓存结构快照,不改变活动页面
StructureCacheCapacityIntegerR/WLRU 缓存保留的完整页面结构快照数量上限
StructureCacheCountIntegerR当前缓存的页面结构快照数量
StructureCacheHitCount / StructureCacheMissCountInt64R该组件实例累计的结构快照缓存遥测数据
MetaText[const Tag: string]WStringR按标签名称获取任意元数据值
MetadataTPdfDocumentMetadataR包含八个标准 Info 字典元数据字段的单一快照
ModifiedDateWStringR最后修改日期元数据
PageCountIntegerR总页数
PdfVersionTPdfVersionR生效的 PDF 版本,包括存在时有效的 catalog /Version 覆盖
PermissionsLongWordR文档权限标志
GrantedPermissionsTPdfPermissionsR从 Permissions 解码的类型化所有者密码权限集合
PrintCopiesIntegerR指定的打印份数
PrintPageRangesTPdfPrintPageRangesR查看器首选项中从 1 开始计数的打印页面范围
PrintPaperHandlingTPrintPaperHandlingR纸张处理首选项
PrintScalingBooleanR是否启用打印缩放
ProducerWStringRPDF 生成器应用程序
SubjectWStringR文档主题
TitleWStringR文档标题
UserPermissionsLongWordR用户级权限
UserGrantedPermissionsTPdfPermissionsR从 UserPermissions 解码的类型化用户密码权限集合
ViewerPreference[const Key: string]WStringR按键获取查看器首选项值
XFABooleanR文档包含 XFA 表单时为 True

页面属性

属性类型读/写说明
PageFPDF_PAGER底层 PDFium 页面句柄
PageBoundsTPdfRectangleR当前页面的包围矩形
PageComplexityTPdfPageComplexityR当前页面的原生对象、线段、图像像素和透明度事实
PageBox[Box: TPdfPageBox]TPdfRectangleR/W当前页面的 MediaBox、CropBox、BleedBox、TrimBox 或 ArtBox
PageHeightDoubleR当前页面的高度(单位为点)
PageLabel[PageNumber: Integer]WStringR给定页码的页面标签
PageModeTPageModeR文档打开时的显示方式
PageRotationTRotationR/W当前页面的旋转(ro0、ro90、ro180、ro270)
PageWidthDoubleR当前页面的宽度(单位为点)
ThumbnailTBitmapR当前页面的缩略图位图
TransparentBooleanR当前页面包含透明内容时为 True

文本和字符属性

属性类型说明
Character[Index]WideChar指定索引处的 Unicode 字符
CharacterAngle[Index]Single字符旋转角度(弧度)
CharacterCountInteger当前页面的字符数量
CharacterFontSize[Index]Double指定索引处字符的字号;FontSize[Index] 仍作为兼容别名保留
CharacterFontWeight[Index]Integer指定索引处字符的字重
CharacterGenerated[Index]Boolean字符为生成(非原始内容)时为 True
CharacterIsHyphen[Index]Boolean字符为连字符时为 True
CharacterMapError[Index]Boolean字符存在映射错误时为 True
CharacterOrigin[Index]TPdfPoint字符的起点
CharacterRectangle[Index]TPdfRectangle字符的包围矩形
Charcode[Index]WideChar指定索引处的字符代码
FindFPDF_SCHHANDLE底层 PDFium 搜索句柄
Rectangle[Index]TPdfRectangle上一次 RectangleCount 调用得到的文本矩形
TextPageFPDF_TEXTPAGE底层 PDFium 文本页面句柄

字体属性

属性类型说明
FontAscent[Index; FontSize]Single指定索引处文本对象所用字体的上伸高度
FontBaseName[Index]WString指定索引处文本对象的基本字体名称
FontData[Index]TBytes指定索引处文本对象的原始字体数据
FontDescent[Index; FontSize]Single指定索引处文本对象所用字体的下伸高度
FontFamilyName[Index]WString指定索引处文本对象的字族名称
FontHandle[Index]FPDF_FONT指定索引处文本对象的底层 PDFium 字体句柄
FontIsEmbedded[Index]Boolean文本对象的字体已嵌入 PDF 时为 True
FontItalicAngle[Index]Integer文本对象字体的倾斜角
FontSize[Index]DoubleCharacterFontSize[Index] 的向后兼容别名
FontWeight[Index]Integer文本对象字体的字重(例如 400 = 常规,700 = 粗体)

对象属性

属性类型说明
ObjectCountInteger页面对象数量
ObjectType[Index]TObjectType类型:otUnknown、otText、otPath、otImage、otShading、otForm
ObjectBounds[Index]TPdfRectangle对象的包围矩形
ObjectBitmap[Index]TBitmap对象的位图表示
ObjectHandle[Index]Pointer底层对象句柄
ObjectTransparent[Index]Boolean对象透明时为 True

图像属性

属性类型说明
Bitmap[Index]TBitmap指定索引处页面对象的位图
BitmapCountInteger页面上的位图对象数量
Image[Index]TPdfImage指定索引处的图像数据(Width、Height、Data)
ImageInfo[Index]TPdfImageInfo轻量的尺寸、滤镜、DPI、位深、色彩空间、标记内容 ID 和 ICC 事实,不复制有效载荷字节
ImageCountInteger页面上的图像数量

注释属性

属性类型读/写说明
Annotation[Index]TPdfAnnotationR/W获取或设置指定索引处的批注
AnnotationCountIntegerR当前页面的批注数量

表单属性

属性类型读/写说明
FormField[Index]WStringR/W按索引获取表单字段值
FormFieldAt[X, Y: Single]WStringR/W页面位置处的表单字段值
FormFieldCountIntegerR当前页面的表单字段数量
FormFieldInfo[Index]TPdfFormFieldInfoR按索引获取表单字段信息
FormFieldInfoAt[X, Y: Single]TPdfFormFieldInfoR页面位置处的表单字段信息
FormFieldTypeAtPoint(X, Y: Double; out FieldType)BooleanR返回页面点位的原生字段类型,不分配批注句柄
FocusedFormFieldValue()WStringR通过 FocusedFormFieldIndex 返回当前逻辑表单字段值,不依赖交互式插入符
FocusedFormFieldName()WStringR返回当前逻辑表单字段的显示名称,优先使用 AlternateName,退回到 Name
FocusedFormFieldDetails()TPdfFormFieldInfoR返回当前逻辑表单字段的 TPdfFormFieldInfo
FormHandleFPDF_FORMHANDLER底层表单填写句柄
HasFormFieldAt[X, Y: Single]BooleanR该位置存在表单字段时为 True

附件属性

属性类型读/写说明
Attachment[Index]TBytesR/W按索引获取附件数据
AttachmentCountIntegerR附件数量
AttachmentName[Index]WStringR按索引获取附件文件名
AttachmentType[Index]WStringR按索引获取附件 MIME 子类型

导航属性

属性类型说明
Bookmark[const Title: WString]TBookmark按标题查找书签,包含目标、动作、展开状态、后代数量、路径和颜色元数据
BookmarkChildren[const Bookmark: TBookmark]TBookmarks书签的子书签
BookmarkFrom[Handle: FPDF_BOOKMARK]TBookmark从句柄获取书签数据
BookmarksTBookmarks顶层书签数组
Destination[Index]TDestination按索引获取命名目标,含查看模式和原始查看参数
DestinationByName[const Name: WString]TDestination按名称获取命名目标
DestinationCountInteger命名目标数量
HasBookmarkChildren[const Bookmark: TBookmark]Boolean书签存在子节点时为 True
LinkAnnotation[PageNumber, Index]TLinkAnnotation给定页面上的链接批注
LinkAnnotationCount[PageNumber]Integer页面上的链接批注数量
WebLink[PageNumber, Index]TWebLink给定页面上的网页链接(URL)
WebLinkCount[PageNumber]Integer页面上的网页链接数量

数字签名属性

属性类型说明
Signature[Index]TPdfSignature指定索引处的数字签名信息
SignatureCountInteger文档中的数字签名数量
SignaturesTPdfSignatures所有原生数字签名的调用方拥有快照

TPdf 事件

事件类型说明
OnFormFieldEnterTPdfFormFieldEnterEvent进入表单字段时触发。参数:Sender: TObject; const Text: WString
OnFormFieldExitTNotifyEvent焦点离开表单字段时触发
OnJavaScriptAlertTPdfJavaScriptAlertEventPDF 内嵌 JavaScript 调用 app.alert 显示消息框时触发
OnJavaScriptBeepTPdfJavaScriptBeepEventPDF 内嵌 JavaScript 调用 app.beep 播放系统声音时触发
OnJavaScriptMailTPdfJavaScriptMailEventPDF 内嵌 JavaScript 调用 mailDoc 或 app.mailMsg 撰写邮件时触发
OnJavaScriptPrintTPdfJavaScriptPrintEventPDF 内嵌 JavaScript 调用 print 启动打印作业时触发
OnJavaScriptResponseTPdfJavaScriptResponseEventPDF 内嵌 JavaScript 动作请求用户交互时触发
OnJavaScriptSubmitFormTPdfJavaScriptSubmitFormEventPDF 内嵌 JavaScript 向 URL 提交表单时触发
OnNamedActionTPdfNamedActionEvent文档引发命名动作时触发;设置 Handled 可接管四个标准导航名称
OnPageChangeTNotifyEvent当前页面改变时触发
OnUnsupportedFeatureTPdfUnsupportedFeatureEventPDF 包含不受支持的特性时触发
OnXfaEmailTPdfXfaEmailEvent动态 XFA 表单请求电子邮件动作时触发
OnXfaFocusChangeTPdfXfaFocusChangeEvent动态 XFA 表单内焦点字段改变时触发
OnXfaGotoUrlTPdfXfaGotoUrlEvent在动态 XFA 表单内导航链接 URL 时触发
OnXfaHttpRequestTPdfXfaHttpRequestEvent动态 XFA 表单发出 HTTP 请求时触发
OnXfaOpenFileTPdfXfaOpenFileEvent动态 XFA 表单请求打开外部文件时触发
OnXfaPageCountChangedTPdfXfaPageCountChangedEvent动态 XFA 表单的页数在运行时改变时触发
OnXfaRuntimeMissingTNotifyEvent打开 XFA 文档但 XFA 运行时不可用时触发
OnXfaUriActionTPdfXfaUriActionEvent链接 URI 动作在动态 XFA 上下文中触发时引发
OnFormCursorTPdfFormCursorEvent表单字段请求光标形状时触发;设置 Handled 可覆盖原生光标
OnFormValueChangeTPdfFormValueChangeEvent焦点表单字段的值改变后触发
OnFormUriActionTPdfFormUriActionEvent表单字段引发 URI 动作时触发;设置 Handled 可抑制原生导航
OnFormGoToActionTPdfFormGoToActionEvent表单字段引发带页面、缩放模式和位置的跳转动作时触发;设置 Handled 可手动导航
OnFormSelectionRectTPdfFormSelectionRectEvent表单层报告焦点字段的选择矩形时触发

其他公共方法和属性

API说明
function AnalyzeSignatureRevisions: TPadesRevisionAnalysisReport为每个内嵌签名重建原始修订链并分类后续对象更改
function BuildPadesEvidenceReport(const Options: TPadesEvidenceReportOptions): TPadesEvidenceReport从保留的单一原始字节捕获构建可导出的多签名证据
property About: string报告 TPdf 的 PDFium Delphi Component 组件版本信息
Active打开或关闭所选 PDF 文档
function AddAnnotationFileAttachment(AnnotIndex: Integer; const Name: WString; const FileData: TBytes): Boolean把内嵌文件附加到既有批注,并在一次调用中写入其内容
procedure AddImage(const FileName: string; X, Y, Width, Height: Double)把文件中的图像插入当前 PDF 页面。内部使用 TPicture.LoadFromFile,因此接受向 VCL 或 LCL 图形单元注册的任何图像格式(BMP、通过 Vcl.Imaging.PngImage / LCL TPortableNetworkGraphic 的 PNG、JPG 等)。坐标位于 PDF 用户空间(原点在页面左下角);Width 和 Height 是以用户单位表示的放置尺寸,而不是源图像的像素尺寸
function AddJpegImage(JpegImage: TStream; X, Y, Width, Height: Double): Boolean使用指定坐标把 JPEG 图像添加到当前 PDF 页面
procedure AddPage(PageNumber: Integer; Width, Height: Double)以给定的点尺寸创建新的空白页面
AddPath把累积的 MoveTo/LineTo/BezierTo 路径作为新页面对象提交,并应用请求的绘制样式
procedure AddPathToAnnotation(Index: Integer)把待处理的 CreatePath 路径交给墨迹或图章批注,而不是交给页面内容
procedure AddPicture(Picture: TPicture; X, Y: Double)使用指定坐标把图像添加到当前 PDF 页面
function AddPageObjectMark(Index: Integer; const Name: AnsiString; const Params: TPdfContentMarkParams): Integer向页面对象添加标记内容条目及其初始类型化属性列表
PageObjectInfo / AnnotationObjectInfo / PageObjectMarks / PathInfo / TransformPageObject / RenderPageWithMatrix单个概览页上的高级页面内容与批注对象检查、标记、路径、变换和文本度量
function SharePageObjectMark(TargetIndex, SourceIndex, SourceMarkIndex: Integer): Boolean在另一个页面对象上复用原生标记内容属性标记
function AddShapedText(const Text, Font: WString; FontSize: Single; X, Y: Double; out Shaped: TPdfShapedText; Direction: TPdfTextDirection = ptdAuto; Color: TColor = clBlack; Alpha: Byte = $FF): Boolean把双向和复杂文字整形为定位的 CID Type 2 字形,带 ToUnicode 和逻辑 ActualText 语义
procedure AddStandardFontText(const Text: WString; StandardFont: TPdfStandardFont; FontSize: Single; X, Y: Double; Color: TColor; Alpha: Byte; Angle: Double = 0.0)使用 14 种标准 PDF 字体之一绘制文本,不嵌入字体程序
function AddCidType2Text(const FontData: TBytes; const Glyphs: TPdfCidGlyphs; FontSize: Single; X, Y: Double; const Options: TPdfCidFontOptions; out Report: TPdfCidFontReport; Color: TColor = clBlack; Alpha: Byte = $FF): Boolean嵌入定位的 CID Type 2 字形,支持显式 Unicode 映射、可选 TrueType 子集化、受控回退和提取验证
procedure AddText(const Text, Font: WString; FontSize: Single; X, Y: Double; Color: TColor = clBlack; Alpha: Byte = $FF; Angle: Double = 0.0)在指定位置把文本添加到当前 PDF 页面
Annotation索引属性 —— 返回当前页面上给定索引处的批注记录(子类型、矩形、颜色、内容等)
AnnotationCount附加到当前活动页面的批注对象数量
function AnnotationObjectCount(Index: Integer): Integer统计墨迹或图章批注自身绘制所用的页面对象数量
function AnnotationObjectInfo(Index, ObjectIndex: Integer): TPdfPageObjectInfo读取批注所拥有的一个页面对象的类型、边界、矩阵、颜色和线条样式
property Attachment[Index: Integer]: TBytes读取或替换指定从 0 开始索引处文档级内嵌文件的原始字节载荷。每个槽位对应 PDF 1.7 规范第 7.11 节定义的 PDF EmbeddedFiles 名称树中的一个条目
AttachmentCount文档中声明的内嵌文件附件数量
property AttachmentDescription[Index: Integer]: WString读取或写入文档级内嵌文件的 /Desc 描述
function AttachmentHasKey(Index: Integer; const Key: WString): Boolean测试内嵌附件是否携带给定的文件规格键
AttachmentName返回文档 EmbeddedFiles 名称树中给定从 0 开始索引处内嵌文件注册的 Unicode 文件名
property AttachmentRelationship[Index: Integer]: WString返回文档级内嵌文件的 /AFRelationship 名称(ISO 32000-2 Table 43),条目缺失时返回空字符串
AttachmentType返回指定从 0 开始索引处内嵌文件注册的 MIME 子类型字符串。该值取自 PDF 第 7.11.3 节定义的文件规格字典的 /Subtype 条目
Author返回 PDF 文档信息字典中 /Author 条目的值
BezierTo从当前点出发,经过控制点 (X1,Y1) 和 (X2,Y2) 到 (X3,Y3) 追加一条三次贝塞尔曲线
Bitmap返回新解码的 VCL TBitmap,包含当前页面上指定图像对象的光栅数据。该位图在每次调用时重新分配,由调用方拥有并负责调用 Free
BitmapCount活动页面上可作为 VCL TBitmap 访问的图像页面对象数量
Bookmark按标题字符串查找书签,并从 PDF 第 12.3.3 节定义的文档大纲树返回匹配的 TBookmark 记录
BookmarkChildren索引属性 —— 返回给定父书签节点的直接子书签
BookmarkFrom通过读取该大纲节点的标题、目标页面和动作元数据,把原始 FPDF_BOOKMARK 句柄转换为完整填充的 TBookmark 记录
Bookmarks索引属性 —— 返回文档的顶层大纲(书签)条目完整列表
Character对给定索引处字符的 UTF-16 字符串形式的只读索引访问(通常是一个代码单元,代理对时为两个)
CharacterAngle对字符旋转角度(弧度)的只读索引访问,已考虑页面 CTM
CharacterCount当前活动页面上可提取的字符数量
CharacterFontSize对渲染该字符所生效字号(PDF 点,CTM 缩放后)的只读索引访问
CharacterFontWeight对所用字体 OS/2 usWeightClass 值的只读索引访问(100 = Thin,400 = Regular,700 = Bold,900 = Black)
CharacterGenerated当指定索引处的字符是 PDFium 在文本提取期间合成、而非由页面内容流显式绘制时返回 True。合成字符用于连字展开、软连字符和单词/行边界启发式,使搜索和全选结果读起来自然
function CharacterIndexToTextIndex(Index: Integer): Integer把字符索引映射到提取文本中的偏移,生成字符返回 -1
function CharacterInfo(Index: Integer): TPdfCharacterInfo读取一个字符的颜色、字体名称和标志、宽松边界、矩阵以及所属文本对象
function CharacterIndexAtPos(X, Y, ToleranceX, ToleranceY: Double): Integer获取页面上某位置处或附近字符的索引。该点处及附近没有字符时返回 -1,发生错误时返回 -3
CharacterIsHyphen当指定索引处的字符被识别为用于行尾断词的软连字符时返回 True。在跨行重建单词且不保留可见连字符标记时很有用
CharacterMapError当指定索引处的字符无法映射到有效 Unicode 码点时返回 True。该标志由 PDFium 文本提取器按字符报告,便于调用方识别由于来源字体缺少可用 ToUnicode CMap 或编码向量而可能不正确的码点
CharacterOrigin对字符在 PDF 用户空间点坐标中起点(基线左侧锚点)的只读索引访问
CharacterRectangle对字符在 PDF 用户空间坐标(原点在左下角,单位为点)中包围矩形的只读索引访问
Charcode对给定索引处字符的 Unicode 码点(UCS-4)的只读索引访问
function ChooseRenderFlags(Scale: Double; DestWidth, DestHeight: Integer): Integer根据最终缩放比例和目标尺寸选取原生 FPDF_RENDER_* 标志,用于自适应图像降采样
procedure ClearFormFieldFocus配合当前页面的 AcroForm 逻辑焦点游标,用于键盘、语音和无障碍工作流
procedure ClearPageSceneCache清除已缓存的解析页面场景,不改变活动页面
procedure ClearThumbnailCache释放保留的内嵌与渲染缩略图位图,不改变缓存限制或遥测数据
ClosePath通过绘制直线回到最近的 MoveTo 位置来闭合当前子路径
Compressed控制调用 SaveAs / Save 时输出 PDF 中的流是否进行 FlateDecode 压缩。保存后压缩引擎会扫描序列化的 PDF,把未压缩的流替换为对应的 zlib deflate 流,并重建 xref 表。已压缩的流保持不变
constructor Create(AOwner: TComponent); override创建 TPdf 组件并初始化文档、渲染、表单和缓存状态
procedure CreateAnnotation(const Annotation: TPdfAnnotation)创建新批注
CreateAttachment在文档级添加新的内嵌文件(附件)
procedure CreateDocument关闭当前文档(如有)并开始全新的空 PDF
procedure CreatePath(X, Y: Single; FillMode: TPdfFillMode = fmNone; FillColor: TColor = clBlack; FillAlpha: Byte = $FF; Stroke: Boolean = True; StrokeColor: TColor = clBlack; StrokeAlpha: Byte = $FF; StrokeWidth: Single = 1.0; LineCap: TPdfLineCap = lcDefault; LineJoin: TPdfLineJoin = ljDefault; BlendMode: TPdfBlendMode = bmDefault)在初始位置创建新的路径对象
CreateXObjectFromPage把另一个 TPdf 的页面包装为可复用的 Form XObject 句柄,可任意次数盖印到本文档中
CreationDate文档 Info 字典中的原始创建时间戳
CreatorInfo 字典中存储的原始创作应用程序名称
property CrossReferenceTableValid: Boolean报告加载的文档是否拥有完整的交叉引用表
DeleteAnnotation移除当前页面上给定索引处的批注
function DeleteAttachment(Index: Integer): Boolean移除给定索引处的内嵌文件附件
procedure DeletePage(PageNumber: Integer)从文档中移除 PageIndex 处的页面
Destination返回指定从 0 开始索引处命名目标的 TDestination 记录。命名目标是文档 catalog 的 Dests / Names 树下定义的间接目标,如 PDF 第 12.3.2 节所述
DestinationByName按字符串名称查找 /Names 目标,并返回其目标页面 / 适配类型 / 坐标
DestinationCount文档中声明的命名目标数量
function DetectPageSkew(out Report: TPdfSkewReport): Boolean以约 0.1 度的精度测量当前页面的倾斜度,并附带置信度值
destructor Destroy; override在 TPdf 销毁前释放文档句柄、表单状态、缓存字体、流和计时器
ExportXFDF把表单字段和批注序列化为 UTF-8 XFDF,保留嵌套字段路径以及缺失值与显式空值的区别
function ExportXFDFToStream(Stream: TStream): Integer把文档的所有表单值和批注以 XFDF 写入流
function ExtractAttachmentsToStreams(const Destinations: array of TStream; const Options: TPdfAttachmentBatchOptions; out Report: TPdfAttachmentBatchReport; const CancellationToken: IPdfCancellationToken = nil): Boolean在计数和字节预算内把解码后的附件写入调用方拥有的流,支持取消和逐项结果
TPdfAttachmentBatchOptions / TPdfAttachmentBatchReport面向调用方元数据枚举和载荷提取的有界单遍附件批处理模型
ExtractThumbnail(PageNumber: Integer): TBitmap解码内嵌的页面缩略图,不切换或重新加载活动页面
function DeviceToPage(X, Y, Left, Top, Width, Height: Integer; Rotation: TRotation; out PageX, PageY: Double): Boolean把点的屏幕坐标转换为页面坐标
property Document用于直接底层访问的原生 PDFium FPDF_DOCUMENT 句柄
function DocumentReadableContent: TPdfContentFragments返回面向屏幕阅读器、文本转语音和无障碍工作流的语义可读内容片段
function DocumentReadingUnits: TPdfReadingUnits为整个文档可读内容流构建句子级 TPdfReadingUnit 记录
FileIdentifier只读属性 —— 返回所请求标识符槽位的文档文件标识符数组
property FileName要打开的 PDF 路径;在 Active 状态下赋值会从新路径重新加载
Find从 PageNum(为 -1 时从当前页面)开始搜索 Pattern,返回第一个匹配的全局字符索引
function FindFirst(const Text: WString; Options: TSearchOptions = []; StartIndex: Integer = 0; DirectionUp: Boolean = True): Integer开始搜索指定文本。StartIndex 从 0 开始计数,-1 表示页面末尾。DirectionUp 参数决定此次搜索操作的方向
function FindNext推进进行中的查找会话游标,返回下一个匹配的字符索引
function FindPrevious把查找游标回退一个匹配
function CreateDocumentSearch创建惰性的文档级搜索,每次调用返回一个匹配及其页面空间矩形
function FlattenAllPages(nFlag: Integer = FLAT_NORMALDISPLAY): Boolean扁平化文档中每一页的便捷包装。每页都以 FLATTEN_SUCCESS 或 FLATTEN_NOTHINGTODO 完成时返回 True。推荐工作流:GenerateFormAppearances → FlattenAllPages → SaveAs
function FlattenPage(nFlag: Integer = FLAT_NORMALDISPLAY): Integer把当前页面上的批注和表单控件扁平化为永久(不可编辑)页面内容。nFlag 选择扁平化配置:FLAT_NORMALDISPLAY (0) 用于屏幕显示,FLAT_PRINT (1) 用于打印输出。返回 FLATTEN_SUCCESS、FLATTEN_NOTHINGTODO 或 FLATTEN_FAIL 之一。扁平化已填写的表单值时应先调用 GenerateFormAppearances
FlattenPageRotation把每页当前的 /Rotate 烘焙到内容流、页面框和批注矩形中,然后把 /Rotate 重置为 0,使视觉布局得以保留而不依赖旋转显示提示
function FocusedFormFieldDetails: TPdfFormFieldInfo返回当前逻辑表单字段的 TPdfFormFieldInfo
function FocusedFormFieldIndex: Integer配合当前页面的 AcroForm 逻辑焦点游标,用于键盘、语音和无障碍工作流
function FocusedFormFieldName: WString返回当前逻辑表单字段的显示名称,优先使用 AlternateName,退回到 Name
function FocusedFormFieldText: WString配合当前页面的 AcroForm 逻辑焦点游标,用于键盘、语音和无障碍工作流
function FocusedFormFieldTextDirection: TPdfFormTextDirection通过 PDFium 的 FORM_GetTextDirection 导出读取焦点控件的内存中文本方向
function FocusedFormOptionSelected(Index: Integer): Boolean报告焦点列表框或组合框的某一选项是否被选中
function FocusedFormFieldValue: WString通过 FocusedFormFieldIndex 返回当前逻辑表单字段值,不依赖交互式插入符
function FocusFormField(Index: Integer): Boolean配合当前页面的 AcroForm 逻辑焦点游标,用于键盘、语音和无障碍工作流
function FocusNextFormField: Integer配合当前页面的 AcroForm 逻辑焦点游标,用于键盘、语音和无障碍工作流
function FocusPreviousFormField: Integer配合当前页面的 AcroForm 逻辑焦点游标,用于键盘、语音和无障碍工作流
FontAscent返回页面对象所用字体的上伸高度(基线到最高上伸部分的距离),以 PDF 点表示并按调用方提供的字号缩放
FontBaseName返回页面对象所用字体的 PostScript 基本名称(PDF 字体字典中的 /BaseFont 条目),包括 -Bold 或 ,Italic 等样式后缀
FontData对内嵌字体程序原始字节的只读索引访问(仅在字体已嵌入时填充)
FontDescent返回页面对象所用字体的下伸高度(基线到最低下伸部分的距离),以 PDF 点表示并按调用方提供的字号缩放
FontFamilyName返回当前页面上页面对象所用字体的排印字族名称(例如 Helvetica、Times New Roman、Noto Sans CJK SC)
property FontFlags[Index: Integer]: Integer返回原生 PDF 字体描述符标志,对象没有字体时返回 -1
FontHandle返回页面对象所用字体的原生 FPDF_FONT 句柄。该句柄让高级调用方直接访问组件未封装的 PDFium 字体 API
FontIsEmbedded指示页面对象所用字体是嵌入 PDF 内(True),还是仅在查看时从操作系统解析引用(False)
FontItalicAngle对字体倾斜角(度)的只读索引访问(典型斜体为负值;正体为 0)
FontSize返回当前页面上单个字符的渲染字号(PDF 点)。FontSize 是为向后兼容保留的 CharacterFontSize 别名
FontWeight返回当前页面上页面对象所用字体的 CSS 风格字重(粗细)。典型值为常规 400、粗体 700
FormField索引属性 —— 返回当前页面上的一个表单字段
FormFieldAt读取或写入给定页面坐标处表单字段的值
FormFieldCount当前活动页面上的表单字段控件数量
FormFieldInfo描述活动页面上给定索引处表单字段的完整记录
FormFieldInfoAt位于给定页面坐标处控件的表单字段记录
FormHostCallbacksComplete, FormSelectionRects, OnForm*生命周期安全的原生表单页面,以及由宿主控制的导航、URI、光标、值变化和选择回调
function FormFieldTypeAtPoint(X, Y: Double; out FieldType: TPdfFormFieldType): Boolean使用原生点位命中测试返回字段类型,不创建批注句柄
function FormFieldTabOrder: TPdfIntegerArray配合当前页面的 AcroForm 逻辑焦点游标,用于键盘、语音和无障碍工作流
property FormFill让应用程序提供表单相关回调(Beep、Invalidate、OutputDocFile 等)的接口
FormHandle附加到文档的原生 PDFium 表单填写环境句柄
function DetachFormObjectChild(FormIndex, ChildIndex: Integer): FPDF_PAGEOBJECT移除 Form XObject 子对象并移交其原生句柄的所有权
function FormObjectChildren(Index: Integer): TPdfPageObjectInfos列出嵌套在 Form XObject 内的页面对象
function GetAnnotationFontColor(AnnotIndex: Integer; out Color: TColor): Boolean读取表单字段控件批注的文本颜色
function GetAttachmentStringValue(Index: Integer; const Key: WString): WString从附件的文件规格字典读取一个字符串条目
function GetImageObjectRenderedBitmap(Index: Integer): TBitmap渲染图像对象,应用其蒙版、颜色转换和矩阵
function GetObjectRenderedStrokePattern(Index: Integer): TBitmap把路径对象描边所用的平铺图案光栅化为归调用方所有的位图,没有图案时返回 nil
property FormType告知文档包含 AcroForm 字段、XFA 还是完全没有表单
procedure GenerateFormAppearances通过 FPDF_FFLDraw 渲染每一页,为每页上的每个表单控件重新生成 /AP(外观流)。这是 FormField[i] := value 赋值的推荐配套调用 —— 没有它,表单值可能只在字段获得焦点时可见,且后续任何扁平化操作都会静默丢失这些值。请在所有 FormField[] 赋值之后、SaveAs / FlattenPage / FlattenAllPages 之前调用
function GetPageBox读取当前页面上指定名称页面框的矩形
function GetXfaConfig: TBytes从 PDF 文档检索 XFA config 数据包的原始 XML 字节
function GetXfaDatasets: TBytes从 PDF 文档检索原始的 XFA datasets XML 字节
function GetXfaFormPackets: TXfaPacketList把所有内嵌 XFA 数据包快照到 TXfaPacketList 集合
function GetXfaPacketByName(const Name: string): TBytes返回按名称标识的 XFA 数据包的原始内容字节
function GetXfaPacketContent(Index: Integer): TBytes返回给定从 0 开始索引处的 XFA 数据包原始内容字节
function GetXfaPacketCount: Integer返回文档中内嵌的 XFA 数据包数量
function GetXfaPacketName(Index: Integer): string返回给定从 0 开始索引处的 XFA 数据包名称
function GetXfaTemplate: TBytes从 PDF 文档检索 XFA template 数据包的原始 XML 字节
GrantedPermissions以类型化 TPdfPermissions 集合返回所有者密码权限
HasBookmarkChildren给定大纲节点至少有一个子书签时返回 True
HasFormFieldAt命中测试:当表单字段控件覆盖给定页面坐标时返回 True
HasPermission(Permission: TPdfPermission): Boolean测试单个所有者密码权限,无需手动位运算
Image索引属性 —— 返回当前页面上的一个图像页面对象(句柄 + 包围盒 + 位深 + 色彩空间)
ImageCount当前活动页面上的光栅图像 XObject 数量
function ImportFDF(const FileName: string): Integer应用 FDF 文档中的表单字段值;也提供 TStream 重载
ImportXFDF应用命名空间感知的 XFDF 字段和批注,包括显式空值、混合文本与 CDATA 以及深层嵌套的字段名
property IncrementalSaveActive: Boolean报告当前是否打开了增量保存会话
procedure InsertClipPath(Left, Bottom, Right, Top: Single)把当前页面上绘制的所有内容裁剪到 PDF 页面单位的矩形内
procedure InsertObjectAtIndex(StackIndex: Integer; PageObj: Pointer)在绘制顺序的指定深度插入页面对象,而不是置于最上层
class function InspectAvailability(AStream: TStream): TPdfAvailability在不加载 PDF 流的情况下报告其线性化、解析可用性和首页信息
ImportNPagesToOne构建全新的 TPdf,其页面是源文档页面的 NumX×NumY 组合,适用于 N-up 打印布局
ImportPages把另一个已打开 TPdf 中的一页或多页复制到本文档
ImportPagesByIndex按从 0 开始的索引从另一个 TPdf 导入特定页面子集,并可控制本文档中的插入位置
function ImportPreferences(Pdf: TPdf): Boolean控制 ImportPages 复制内容方式(资源、命名目标、注释等)的位集合
function InsertFormObjectFromXObject(XObject: TPdfXObject): FPDF_PAGEOBJECT把 TPdfXObject 包装页面的一个副本插入本文档的当前页面,返回 FPDF_PAGEOBJECT,供调用方定位 / 缩放 / 旋转
IsTagged文档是否声明了用于无障碍的结构树
JavaScriptAction索引属性 —— 返回一个文档级 JavaScript 动作(name + Type + Source 字符串)
JavaScriptActionCountPDF 中存储的文档级 JavaScript 动作数量
JavaScriptActions以单一动态数组返回的所有文档级 JavaScript 动作
Keywords文档 Info 字典中作者提供的关键词列表
Language文档 catalog 中声明的自然语言标识符
LineTo从当前点到 (X, Y) 追加一条直线
LinkAnnotation索引属性 —— 返回给定索引处的显式 /Annot Subtype Link,包括目标动作或目标位置
LinkAnnotationCount特定页面上 /Link 批注条目的数量
function LinkAtPoint(X, Y: Double): Boolean通过 FPDFLink_GetLinkAtPoint 对页面空间坐标进行原生链接批注命中测试
procedure LoadCustomDocument(AStream: TStream; AOwnsStream: Boolean = False)使用 PDFium 的按需块读取器从任意可定位 TStream 加载 PDF,因此多 GB 文档和远程 / 数据库支持的数据源无需预先复制到内存
TPdfRandomAccessStore在内存上限下存储可定位内容,溢出到私有临时存储,并支持与游标无关的 ReadAt 和 WriteAt 调用
function TextIndexToCharacterIndex(Index: Integer): Integer把提取文本中的偏移映射回产生它的字符
function TextObjectGlyphOutline(Index, GlyphIndex: Integer; FontSize: Single): TPdfPathSegments读取一个字形的矢量轮廓,规范化为一个 em 等于 1.0
function TextObjectGlyphWidth(Index, GlyphIndex: Integer; FontSize: Single): Single按请求的字号测量原生字形步进
function TextObjectFontSize(Index: Integer): Single读取一个文本页面对象的原生字号
procedure SetTextObjectFontSize(Index: Integer; FontSize: Single)在不进行矩阵缩放的情况下编辑文本对象字号
procedure LoadDocument从文件、字节数组、经过验证的内存缓冲区或非 nil 内存流打开 PDF
LastLoadReport返回最新的加载状态、原生恢复路径、xref 有效性、有界审计计数器和类型化问题
SaveAsRepaired写入完整副本,并通过隔离的严格加载验证后才返回成功
property MetaText按标签名称返回一个文档 Info 字典值
Metadata以单一记录快照返回标准的标题、作者、主题、关键词、创建者、生成器、创建日期和修改日期
MergeFiles合并文件支持的源列表,提供有界源句柄、原生页面导入批次、显式策略、进度、取消、回滚和详细报告
ModifiedDate文档 Info 字典中记录的最后修改时间戳
MovePages按从 0 开始的索引就地重排本文档的页面,保持页数不变
MoveTo在给定页面坐标处开始新子路径
ObjectBitmap索引属性 —— 把一个图像页面对象返回为可渲染的 VCL TBitmap(从 JPX/CCITT 等有损解码)
ObjectBounds当前页面上单个页面对象的紧凑轴对齐包围矩形
ObjectCount当前页面上页面对象(文本、路径、图像、着色、表单)数量的只读值
ObjectHandle指定页面对象的原始 PDFium FPDF_PAGEOBJECT 指针
ObjectTransparent指示页面对象是否参与 PDF 透明度
ObjectType返回指定索引处页面对象的类别 —— 文本、路径、图像、着色或表单 XObject。该分类与产生对象的 PDF 内容流算子对应,让调用方可以用单一 switch 分发遍历页面对象数组
function OptimizeImages(const Options: TPdfImageOptimizeOptions; out Report: TPdfImageOptimizeReport): Boolean通过原生位图和 FPDFImageObj_SetBitmap 路径对有效放置 DPI 超过调用方目标的页面图像对象进行降采样,然后让文档处于可 SaveAs 的状态
function GetFeatureInventory: TPdfFeatureInventory对每一页只扫描一次,返回文本、路径、图像、表单 XObject 和着色对象计数的统一记录,并附带文档级事实
function GetObjectText(Index: Integer): WString提取一个文本对象绘制的文本
function GetObjectsByType(ObjType: TObjectType): TPdfIntegerArray列出当前页面上某一类所有页面对象的索引
function GetPageActionType(EventType: Integer): Integer报告页面打开或关闭附加动作的 PDFACTION_* 类型,没有时为 0
function GetPageActionURI(EventType: Integer): WString读取页面打开或关闭动作要打开的 URI
function GetTextInReadingOrder(Order: TPdfReadingOrder): WString按原始内容顺序或排序为物理阅读顺序提取页面文本
function GetTextObjectRenderedBitmap(Index: Integer; Scale: Single): TBitmap按请求的比例单独把一个文本对象栅格化
function GetTextRenderMode(Index: Integer): Integer读取文本对象的 FPDF_TEXTRENDERMODE_* 模式,用于区分不可见 OCR 文本和可见文本
function GetWidgetAdditionalActionJavaScript(AnnotIndex, EventType: Integer): WString读取表单字段控件的击键、格式、验证或计算脚本
function AuditActiveContent: TPdfActiveContentAudit返回 JavaScript 动作计数、内嵌文件、签名、XFA 表单类型和权限的快照,不执行任何脚本或动作
property OnFormFieldEnter表单填写引擎在表单字段上获得焦点时触发
property OnFormFieldExit表单填写引擎在表单字段上失去焦点时触发
property OnJavaScriptResponsePDF 内嵌 JavaScript 动作请求用户交互时触发
property OnPageChangePdf.Page 被赋值为不同页面索引时触发
property OnUnsupportedFeature文档使用 PDFium 未实现的 PDF 特性时触发(例如 XFA 完整表单、3D 批注、多媒体)
property OnXfaGotoUrl在动态 XFA 表单内导航链接 URL 时触发
property OnXfaUriAction链接 URI 动作在动态 XFA 上下文中触发时引发
function PadesCryptoAvailable: Boolean指示系统上签名密码后端是否可用
Page当前活动页面的原生 PDFium 页面句柄
function PageUsesOverprint: Boolean在可选打印输出扩展支持检测时查询页面的精确叠印使用情况
function PathInfo(Index: Integer): TPdfPathInfo读取路径对象的填充模式、描边标志和线段几何
property PageBounds[Box: TPdfPageBox]: TPdfRectangle页面级属性 —— 所请求页面框(MediaBox/CropBox/BleedBox/TrimBox/ArtBox)的矩形
property PageBox[Box: TPdfPageBox]: TPdfRectangle页面级属性 —— 读取或写入当前页面上特定的页面框矩形
property PageCount: Integer页面级属性 —— 打开文档的总页数
property PageMetrics[PageNumber: Integer]: TPdfPageMetrics任意页面的缓存尺寸、旋转、标签、透明度和标准页面框
property CacheBudgetBytes: Int64为单个 TPdf 实例设置统一的保留缓存字节上限
property CacheGovernor: TPdfCacheGovernor返回拥有的共享调控器,用于按类别查询和应用缓存协调
property CacheGovernorStatistics: TPdfCacheGovernorStatistics返回当前、峰值、固定、逐出、触达和拒绝遥测数据
property LifecycleActionPolicy: TPdfLifecycleActionPolicy选择禁用、仅显式或兼容的自动文档与页面生命周期动作执行
property PageSceneCacheCapacity: Integer为索引渲染保留的已解析非活动页面场景数量上限
property PageSceneCacheCount: Integer当前可复用的已解析页面场景数量
PageHeight活动页面的高度(PDF 用户空间单位,点 = 1/72 英寸)
function PageObjectClipPath(Index: Integer): TPdfClipPath读取限制一个页面对象绘制范围的裁剪路径
function PageObjectInfo(Index: Integer): TPdfPageObjectInfo以单一记录读取一个页面对象的所有可编辑属性
function PageObjectMarkedContentID(Index: Integer): Integer读取把页面对象链接到结构树的 /MCID,未加标签时为 -1
function PageObjectMarks(Index: Integer): TPdfContentMarks读取附加到页面对象的标记内容标签和类型化属性列表
property PageLabel: WString页面级属性 —— 返回用户可见的页面标签(例如 "iv" 或 "A-3"),而不是从 0 开始的索引
property PageMode: TPageMode页面级属性 —— 文档 /PageMode 提示(Outlines、Thumbs、FullScreen 等)
property PageNumber: Integer可读写的从 1 开始计数的当前页面索引,带边界检查和回滚安全的原生页面替换
property PageRotation: TRotation页面级属性 —— 渲染当前页面时应用的旋转(ro0 / ro90 / ro180 / ro270)
function PageToDevice(PageX, PageY: Double; Left, Top, Width, Height: Integer; Rotation: TRotation; out X, Y: Integer): Boolean把点的页面坐标转换为屏幕坐标
property PageWidth: Double页面级属性 —— 当前页面的宽度(点,1 pt = 1/72 英寸)
function PageWordBoxes: TPdfWordBoxes返回当前 TPdf 页面上单词的 TPdfWordBox 记录,包含字符范围和页面空间矩形
function ExecuteDocumentLifecycleAction(Action: TPdfDocumentLifecycleAction; out ErrorMessage: string): Boolean运行一个原生文档生命周期动作,报告策略、环境或回调失败,不传播异常
function ExecutePageLifecycleAction(PageNumber: Integer; Action: TPdfPageLifecycleAction; out ErrorMessage: string): Boolean运行页面打开或关闭动作,不改变活动页面,并确定性地释放临时原生页面状态
TPdfDocumentLifecycleAction / TPdfPageLifecycleAction文档与页面生命周期动作的策略和执行模型,涵盖禁用、仅显式和兼容自动三种模式
property Password在 Active := True 之前指定的解密密码
PdfAConformance当前打开文档的只读 PDF/A 合规级别,无需显式调用 ValidatePdfA
PdfEConformance当前打开文档的只读 PDF/E 合规级别,无需显式调用 ValidatePdfE
PdfRConformance当前打开文档的只读 PDF/R 合规级别,无需显式调用 ValidatePdfR
PdfUaConformance当前打开文档的只读 PDF/UA 合规级别,无需显式调用 ValidatePdfUa
PdfVersion只读属性 —— 打开文档的 PDF 规范版本(例如 pv14、pv17、pv20)
PdfVTConformance当前打开文档的只读 PDF/VT 合规级别,无需显式调用 ValidatePdfVT
PdfXConformance当前打开文档的只读 PDF/X 合规级别,无需显式调用 ValidatePdfX
function PerformNamedAction(const ActionName: string): Boolean执行一个命名动作;NextPage、PrevPage、FirstPage 和 LastPage 会带边界钳制地移动 PageNumber
property Permissions返回从 /Encrypt 字典解码的所有者密码权限位
PrintCopies内嵌的建议打印份数,表示 PDF 作者希望打印对话框使用的份数
PrintPageRanges解码后的从 1 开始计数的页面范围列表,表示 PDF 作者希望的打印范围
PrintPaperHandling文档 /ViewerPreferences /Duplex 提示的解码值
PrintScaling文档 /ViewerPreferences /PrintScaling 的解码值
Producer生成该文件的 PDF 库或转换器名称
function ReadXmpPacket: TPdfXmpPacket把 XMP 元数据数据包读取为调用方拥有的已解析对象
function InspectPdfAMetadata: TPdfAMetadataReport返回全部八个 ISO 19005-1 Info 到 XMP 映射的类型化等价性证据
function InspectPdfUaLanguageCoverage: TPdfUaLanguageCoverageReport使用标记内容、结构祖先和 catalog 语言继承报告有界的自然语言证据
function InspectPdfUaUnicodeCoverage: TPdfUaUnicodeCoverageReport在单次原生文本页面遍历中报告对象级直接 Unicode 和 ActualText 提取覆盖率
function ReadAttachmentMetadata(MaxAttachments: Integer = 10000): TPdfAttachmentMetadataArray在单次有界原生枚举中捕获附件元数据和解码后大小,不加载有效载荷字节
function ReadStructureElements(PageNumber; Options; out Status): TPdfStructureElements在调用方选择的深度、元素、属性和时间预算下具体化迭代式结构树快照
ReadableContent返回面向屏幕阅读器、文本转语音和无障碍工作流的语义可读内容片段
function ReadablePageContent(PageNumber: Integer): TPdfReadableContent返回面向屏幕阅读器、文本转语音和无障碍工作流的语义可读内容片段
function ReadingUnits: TPdfReadingUnits从当前页面可读内容流构建句子级 TPdfReadingUnit 记录,用于辅助听读工作流
Rectangle返回当前页面文本布局中的一个文本包围矩形
procedure RefreshAppearance(AnnotIndex: Integer)强制 PDFium 重新生成一个批注的外观流
procedure RemoveAnnotationObject(Index, ObjectIndex: Integer)从墨迹或图章批注中删除一个页面对象
function RectangleCount(StartIndex: Integer = 0; Count: Integer = MaxInt): Integer统计一段文本占用的矩形区域数量。若这些字符位于同一行且使用相同字体设置,函数会自动把小字符框合并为更大的框
procedure ReloadPage从 PDFium 引擎重新加载当前所选页面,并刷新页面对象缓存
procedure RemoveObject(Index: Integer; DestroyObject: Boolean = True)从当前页面移除指定的页面对象。DestroyObject 为 True 时,移除后释放该对象。页面内容流会自动重新生成
procedure RemovePageObjectMark(Index, MarkIndex: Integer)从页面对象移除一个标记内容条目
procedure RemovePageObjectMarkParam(Index, MarkIndex: Integer; const Key: WString)从既有标记移除一个属性,而不替换标记
procedure RenderPage(DeviceContext: HDC; Left, Top, Width, Height: Integer; Rotation: TRotation = ro0; Options: TRenderOptions = [])把页面内容渲染到设备(屏幕、位图或打印机)
function RenderPageByIndex(PageNumber, Width, Height: Integer; Rotation: TRotation = ro0; Options: TRenderOptions = []; Color: TColor = clWhite): TBitmap渲染任意页面而不改变 PageNumber,并在不同输出尺寸间复用其已解析的 PDFium 场景
procedure RenderPageSkia(Canvas: FPDF_SKIA_CANVAS; Width, Height: Integer; DrawFormOverlay: Boolean = True)把当前页面和可选表单叠加层渲染到调用方拥有的 SkCanvas
procedure RenderPageSkiaByIndex(Canvas: FPDF_SKIA_CANVAS; PageNumber, Width, Height: Integer; DrawFormOverlay: Boolean = True)通过已解析页面场景缓存把任意页面渲染到 Skia,不改变活动页面
function RenderPageWithMatrix(Width, Height: Integer; const Matrix: FS_MATRIX; const Clip: TPdfRectangle; Options: TRenderOptions = []; Color: TColor = clWhite): TBitmap通过任意变换渲染,并带目标空间裁剪矩形
function RenderSpotPlate(PlateIndex, Width, Height: Integer; Rotation: TRotation = ro0; Options: TRenderOptions = []; Color: TColor = clWhite): TBitmap在可选 ABI 暴露该操作时渲染一个精确的原生印刷分色版
function RenderOverprintPreview(Width, Height: Integer; Rotation: TRotation = ro0; Options: TRenderOptions = []; Color: TColor = clWhite): TBitmap在可选 ABI 暴露该操作时渲染精确的原生叠印预览
function RenderPageBanded(Width, Height, BandHeight: Integer; BandCallback: TPdfBandCallback; Rotation: TRotation = ro0; Options: TRenderOptions = []; Color: TColor = clWhite): Integer按水平条带渲染页面,使大页面始终无需整页尺寸的位图
function RenderPageBandedToEncoder(Width, Height, BandHeight: Integer; Encoder: TPdfBandedImageEncoder; Rotation: TRotation = ro0; Options: TRenderOptions = []; Color: TColor = clWhite): TPdfBandedImageReport把顺序的原生裁剪条带提供给调用方拥有的编码器,并报告进度和峰值条带内存
function RenderPageBandedToStream(Stream: TStream; Width, Height: Integer; const StreamOptions: TPdfBandedImageStreamOptions; Rotation: TRotation = ro0; Options: TRenderOptions = []; Color: TColor = clWhite): TPdfBandedImageReport直接从页面条带流出 PNG 或 TIFF 行,不保留整页像素
RenderPageProgressiveRenderPage 的可取消变体,驱动 PDFium 的渐进式渲染循环并在迭代之间轮询 IPdfCancellationToken,使长时间高 DPI 渲染可以在页面中途中止而不是阻塞到完成
function RenderPageProgressiveWithColorScheme(Bitmap: TBitmap; Left, Top, Width, Height: Integer; const AToken: IPdfCancellationToken; const ColorScheme: TPdfColorScheme; Rotation: TRotation = ro0; Options: TRenderOptions = []; Background: TColor = clWhite): TPdfProgressiveStatus可取消的渐进式渲染,覆盖路径和文本颜色以支持低视力阅读
function RenderPagesParallel(const PageNumbers: array of Integer; const Options: TPdfParallelRenderOptions; const CancellationToken: IPdfCancellationToken = nil): TPdfParallelRenderReport把当前文档一次性捕获到有界存储,并通过共享内存、只读文件映射或原生随机访问的隔离工作文档渲染请求的页面
function RenderPageThumbnail(PageIndex, MaxWidth, MaxHeight: Integer; Rotation: TRotation; Options: TRenderOptions; Background: TColor; const ColorScheme: TPdfColorScheme): TBitmap把任意从 1 开始计数的页面渲染到修订缓存的调用方拥有位图,并提供完整的渲染键控制
function RenderTile(Left, Top, Width, Height, PageWidth, PageHeight: Integer; Rotation: TRotation = ro0; Options: TRenderOptions = []; Color: TColor = clWhite): TBitmap把页面的矩形区域渲染到新位图。返回的位图必须手动释放
function SpotPlates: TPdfSpotPlateInfos在可选 ABI 暴露枚举时返回精确的原生专色版索引和 UTF-8 名称
InspectOptionalContent枚举可选内容组、配置、使用元数据、单选组、OCMD 表达式和生效的 PDFium 渲染状态
function IsAnnotationSubtypeSupported(Subtype: TPdfAnnotationSubtype): Boolean报告加载的 PDFium 模块能否创建该批注子类型
function IsAnnotationObjectSubtypeSupported(Subtype: TPdfAnnotationSubtype): Boolean报告 PDFium 能否为该批注子类型提取和编辑外观对象
function SaveAs(Stream: TStream; Option: TSaveOption = saNone; PdfVersion: TPdfVersion = pvUnknown): Boolean把 PDF 文档的副本保存到指定流。PdfVersion 为 pv13 到 pv17 时,保存输出会按目标版本规范化和验证,包括增量输出中已有的 catalog /Version 覆盖。验证器覆盖完整的 PDF 1.1–1.7 / ISO 32000-1 特性时间线:滤镜(FlateDecode、JBIG2Decode、JPXDecode)、对象与 xref 流、透明度(SMask、ca/CA、混合模式)、Tagged PDF(StructTreeRoot、MarkInfo)、色彩空间(ICCBased、DeviceN)、页面框(BleedBox/TrimBox/ArtBox)、输出意图、可选内容、AcroForm、CID/Type 0 与 OpenType 字体、AES 与 AES-256 加密(CFM AESV2/AESV3)、所有受版本限制的批注子类型(Widget、Sound、Movie、FreeText、Line、Square、Circle、Highlight、Underline、StrikeOut、Stamp、Ink、Popup、FileAttachment、TrapNet、Squiggly、PrinterMark、Polygon、PolyLine、Caret、Screen、Watermark、3D、Redact)、受版本限制的动作类型(SubmitForm、ResetForm、ImportData、Hide、Named、JavaScript、Trans、SetState、Rendition、GoToE、GoTo3DView)以及 catalog 条目(Perms、Legal、Collection、Requirements、NeedsRendering)。超出所选目标版本的任何内容都会抛出 EPdfError。如果文档没有既有 OpenAction 且目标版本支持,保存的 PDF 会以适合高度的缩放打开到第一页。试用版构建在保存时应用试用水印
function SaveAsLinearized(Stream: TStream; Option: TSaveOption = saNone; PdfVersion: TPdfVersion = pvUnknown): Boolean写入全量重写的 Fast Web View PDF,包含首页分组、两个经典 xref 节,并在有益时提供压缩的附录 F 提示表
function SaveAsLinearized(const FileName: string; Option: TSaveOption = saNone; PdfVersion: TPdfVersion = pvUnknown): Boolean在同目录临时文件完成并通过验证后,以原子方式把 Fast Web View 输出写入文件
function SaveAsObjectStream(Stream: TStream; Option: TSaveOption = saNone; PdfVersion: TPdfVersion = pvUnknown; MaxObjectsPerStream: Integer = 100; MaxDecodedBytesPerStream: Integer = 65536): Boolean按页面局部性重排活动对象,把符合条件的值打包进有界的 ObjStm 组,并写入完整的 type-2 xref 条目
function SaveAsObjectStream(const FileName: string; Option: TSaveOption = saNone; PdfVersion: TPdfVersion = pvUnknown; MaxObjectsPerStream: Integer = 100; MaxDecodedBytesPerStream: Integer = 65536): Boolean在同目录临时文件完成后,以原子方式写入 PDF 1.5+ 对象流输出
function SaveAsNormalizedContent(Stream: TStream; out Report: TPdfContentNormalizeReport; const Options: TPdfContentNormalizeOptions; SaveOption: TSaveOption = saNoIncremental; PdfVersion: TPdfVersion = pvUnknown): Boolean规范化每个逻辑页面内容序列,并把安全的 /Contents 数组合并为单一流
function SaveAsNormalizedContent(const FileName: string; out Report: TPdfContentNormalizeReport; const Options: TPdfContentNormalizeOptions; SaveOption: TSaveOption = saNoIncremental; PdfVersion: TPdfVersion = pvUnknown): Boolean在写入规范化内容和完整经典 xref 后以原子方式替换文件
SaveAsPageLabelled写入完整 PDF 副本,把 catalog /PageLabels 数字树替换为提供的范围,并按照 ISO 32000-1 §12.4.2 应用十进制、罗马和字母编号样式
SaveAsOptionalContentConfigured写入并严格验证一个副本,为单一配置和使用设置调用方选择的可选内容组可见性
function SaveAsReachable(Stream: TStream; out Report: TPdfPruneReport; AllowSignedDocument: Boolean = False): Boolean清扫不可达对象,并把文档重写为保留对象编号的单一经典修订版
function SaveAsReachable(const FileName: string; out Report: TPdfPruneReport; AllowSignedDocument: Boolean = False): Boolean在精简单修订版重写后以原子方式替换文件
function SaveAsDeduplicated(Stream: TStream; out Report: TPdfDedupReport; AllowSignedDocument: Boolean = False): Boolean清扫不可达对象并重写引用,使重复的字体、图像和表单 XObject 共享一个代表对象
function SaveAsDeduplicated(const FileName: string; out Report: TPdfDedupReport; AllowSignedDocument: Boolean = False): Boolean在去重单修订版重写后以原子方式替换文件
function SaveAsFlateRecompressed(Stream: TStream; const Options: TPdfFlateRecompressOptions; out Report: TPdfFlateRecompressReport; AllowSignedDocument: Boolean = False): Boolean当实测节省量超过调用方阈值时,以最大压缩率重新编码符合条件的 FlateDecode 流
function SaveAsFlateRecompressed(const FileName: string; const Options: TPdfFlateRecompressOptions; out Report: TPdfFlateRecompressReport; AllowSignedDocument: Boolean = False): Boolean在 Flate 重压缩重写后以原子方式替换文件
function SaveAsInlineImagesExternalised(Stream: TStream; const Options: TPdfInlineImageExternaliseOptions; out Report: TPdfInlineImageExternaliseReport; AllowSignedDocument: Boolean = False): Boolean把 BI/ID/EI 内联图像提取为可复用 XObject,展开缩写,并用 Do 算子替换内联块
function SaveAsInlineImagesExternalised(const FileName: string; const Options: TPdfInlineImageExternaliseOptions; out Report: TPdfInlineImageExternaliseReport; AllowSignedDocument: Boolean = False): Boolean在内联图像外部化后以原子方式替换文件
function SaveAsReproducible(Stream: TStream; out Report: TPdfReproducibleReport; AllowSignedDocument: Boolean = False): Boolean剥离非确定性时间戳和 /ID,使同一文档的两次保存逐字节相同
function SaveAsReproducible(const FileName: string; out Report: TPdfReproducibleReport; AllowSignedDocument: Boolean = False): Boolean在可复现重写后以原子方式替换文件
function ExportObjectGraph(Stream: TStream; const Options: TPdfObjectGraphInspectOptions; out Report: TPdfObjectGraphReport): Boolean把活动的间接值导出为带预算的类型化 JSON,并显式报告截断
function SaveAsObjectGraphPatched(Stream: TStream; const Operations: TPdfObjectPatchOperations; out Report: TPdfObjectGraphReport; AllowSignedDocument: Boolean = False): Boolean追加经过验证的仅字典补丁修订,并在复制到目标前进行严格加载
function SaveAsObjectGraphPatched(const FileName: string; const Operations: TPdfObjectPatchOperations; out Report: TPdfObjectGraphReport; AllowSignedDocument: Boolean = False): Boolean在对象图补丁事务成功后以原子方式替换文件
function SaveAsRedacted(Stream: TStream; const Options: TPdfRedactionOptions; out Report: TPdfRedactionReport): Boolean把 /Redact 批注应用到隔离快照,移除相交的顶层页面对象,绘制不透明替换内容,并输出干净的单修订版流
function SaveAsRedacted(const FileName: string; const Options: TPdfRedactionOptions; out Report: TPdfRedactionReport): Boolean在删改和净化管线成功后以原子方式替换文件
SaveAsSanitised生成干净的单修订版副本,剥离活动内容和 catalog /AF,然后清扫不可达对象,使孤立的 JavaScript、动作和附件主体从文件体中消失
BeginIncrementalSave / CommitIncrementalSave / EndIncrementalSave脏对象增量保存会话:一次性捕获稳定基线,在精确的前次输出之后追加保留字节的修订,完成后释放会话
procedure BeginIncrementalSave(AllowSignedDocument: Boolean = False)为脏对象修订会话捕获稳定基线和精确的加密或未加密源前缀
function CommitIncrementalSave(Stream: TStream; out Info: TPdfIncrementalCommitInfo): Boolean追加变更或新增的间接对象,继承既有加密,并独立验证结果
function CommitIncrementalSave(const FileName: string; out Info: TPdfIncrementalCommitInfo): Boolean在原子替换前持久刷新并重新打开旁文件,任何失败后恢复会话状态
procedure EndIncrementalSave释放会话基线和累积输出
function ExportFDF(const FileName: string): Integer把表单字段值写为 FDF(ISO 32000-1 12.7.11);也提供 TStream 重载
function SaveAsEncrypted(const FileName: string; const Options: TPdfEncryptOptions): Boolean以 AESV3-CBC 或 ISO/TS 32003 AESV4-GCM 加密保存当前 PDF
function SaveAsEncryptedToStream(Stream: TStream; const Options: TPdfEncryptOptions): Boolean把加密 PDF 输出写入任意可定位 TStream,而不经过磁盘中转
function PreparePadesRemoteSignature(Prepared: TStream; const Options: TPadesRemoteSignOptions; out Request: TPadesRemoteSigningRequest): Boolean创建带约束的审批或认证字段,以及远程签名所需的分离签名摘要、精确 ByteRange、坐标和已准备 PDF 指纹
class function CompletePadesRemoteSignature(Prepared, Dest: TStream; const Request: TPadesRemoteSigningRequest; const CmsDer: TBytes): Boolean拒绝被修改或复用的会话,仅在分离 CMS 绑定到已准备文档摘要时填充保留的签名槽位
class procedure SavePadesRemoteSigningRequest(Stream: TStream; const Request: TPadesRemoteSigningRequest)把固定版本的远程签名请求格式写入流
property SecurityHandlerRevision: Integer标准安全处理器的修订号,未加密文档为负值
function SetAnnotationFontColor(AnnotIndex: Integer; Color: TColor): Boolean覆盖表单字段控件批注的文本颜色
procedure SetAttachmentStringValue(Index: Integer; const Key, Value: WString)向附件的文件规格字典写入一个字符串条目
class procedure SetDeterministicTime(FixedEpoch: Int64)冻结 PDFium 写入输出的时钟,使保存的文档可逐字节复现
class function LoadPadesRemoteSigningRequest(Stream: TStream): TPadesRemoteSigningRequest读取并验证固定版本的远程签名请求格式
function RenewPadesArchiveTimestamp(const FileName: string; const Options: TPadesArchiveTimestampOptions; out Report: TPadesArchiveTimestampReport): Boolean向原始加载的 PAdES 字节追加存档 Document Time-stamp,并写入以原子方式暂存的文件
function RenewPadesArchiveTimestampToStream(Stream: TStream; const Options: TPadesArchiveTimestampOptions; out Report: TPadesArchiveTimestampReport): Boolean追加存档 Document Time-stamp,并把经过验证的 B-LTA 链写入流
class procedure RestoreActualTime在确定性时间会话后让 PDFium 回到系统时钟
function SaveAsPadesDss(const FileName: string; const Options: TPadesDssOptions): Boolean把当前 PDF 保存到文件,包含去重的 PAdES DSS 材料、签名专属 VRI 字典和源 xref 表示
function SaveAsPadesDssToStream(Stream: TStream; const Options: TPadesDssOptions): Boolean把当前 PDF 保存到流,包含去重的 PAdES DSS 材料、签名专属 VRI 字典和源 xref 表示
SaveAsPdfA通过对基础 PDF 进行增量更新后处理,把当前文档保存为符合 PDF/A-1b 的文件,注入 XMP 元数据流、sRGB ICC OutputIntent 和更新后的文档 catalog
function SaveAsPdfAToStream(Stream: TStream; const Options: TPdfASaveOptions): BooleanSaveAsPdfA 的内存变体 —— 把 PDF/A-1b 输出写入任意 TStream,而不经过磁盘中转
SaveAsPdfE通过对基础 PDF 进行增量更新后处理,把当前文档保存为符合 PDF/E-1 的文件,注入 PDF/E-1 文件格式标记(ISO 24517-1:2008)
function SaveAsPdfEToStream(Stream: TStream; const Options: TPdfESaveOptions): BooleanSaveAsPdfE 的内存变体 —— 把 PDF/E-1 输出写入任意 TStream,而不经过磁盘中转
SaveAsPdfR把当前文档保存为符合 PDF/R-1 的文件(ISO 23504-1:2020,即面向扫描文档的 PDF 光栅图像传输与存储子集)
function SaveAsPdfRToStream(Stream: TStream; const Options: TPdfRSaveOptions): BooleanSaveAsPdfR 的内存变体 —— 把 PDF/R-1 输出写入任意 TStream,而不经过磁盘中转
SaveAsPdfUa默认保存为 PDF/UA-1,设置 TPdfUaSaveOptions.PdfUa2 时保存为 PDF/UA-2,包括必需的 XMP 标识和生效的 PDF 版本
function SaveAsPdfUaToStream(Stream: TStream; const Options: TPdfUaSaveOptions): Boolean内存中的 PDF/UA-1 与 PDF/UA-2 输出,不经过磁盘中转
SaveAsPdfVT把当前文档保存为单文件 PDF/VT-1 合规文件(ISO 16612-2:2010,即可变数据与事务性打印的 PDF 子集)
function SaveAsPdfVTToStream(Stream: TStream; const Options: TPdfVTSaveOptions): BooleanSaveAsPdfVT 的内存变体 —— 把 PDF/VT 输出写入任意 TStream,而不经过磁盘中转
SaveAsPdfX通过对基础 PDF 进行增量更新后处理,把当前文档保存为符合 PDF/X-1a:2001、PDF/X-3:2002 或 PDF/X-4 的文件,注入 PDF/X 文件格式标记(ISO 15930 系列)
function SaveAsPdfXToStream(Stream: TStream; const Options: TPdfXSaveOptions): BooleanSaveAsPdfX 的内存变体 —— 把 PDF/X 输出写入任意 TStream,而不经过磁盘中转
function SaveAsWithAssociateFiles(const FileName: string; const Options: TAssocFilesOptions): Boolean把当前 PDF 保存到文件路径,并按照 ISO 32000-2 §7.11.4 把关联文件注入 catalog 或页面
function SaveAsWithAssociateFilesToStream(Stream: TStream; const Options: TAssocFilesOptions): Boolean把带注入关联文件的 PDF 输出写入任意可定位 TStream,而不经过磁盘中转
function SaveAsWithXmpPacket(Stream: TStream; Packet: TPdfXmpPacket; AllowSignedDocument: Boolean = False): Boolean以替换的 XMP 元数据数据包保存文档
function NormalizePdfAMetadata(Stream: TStream; AllowSignedDocument: Boolean = False): Boolean修复不匹配的已映射 XMP 属性并保存规范化后的文档
procedure SetFormFieldFlags(Index: Integer; const Flags: TPdfFormFieldFlags)为当前页面上指定批注索引处的表单字段设置 AcroForm 字段标志
procedure SetFormFieldFlagsAt(X, Y: Single; const Flags: TPdfFormFieldFlags)为给定坐标处的表单字段设置 Flags 位域
function SetFocusedFormFieldText(const Value: WString): Boolean通过 FocusedFormFieldIndex 设置当前逻辑表单字段的值,不依赖交互式插入符
function SetFocusedFormFieldTextDirection(Direction: TPdfFormTextDirection): Boolean更改焦点控件的内存中文本方向;该值在保存时不持久化
function SetFocusedFormOptionSelected(Index: Integer; Selected: Boolean): Boolean选中或清除焦点列表框或组合框的一个选项
procedure SetPageBox(Box: TPdfPageBox; const Rectangle: TPdfRectangle)为当前页面上指定名称的页面框(MediaBox / CropBox / BleedBox / TrimBox / ArtBox)写入新矩形
procedure SetPageObjectMarkParam(Index, MarkIndex: Integer; const Param: TPdfContentMarkParam)在既有标记上更新或插入一个类型化属性,同时保留其标识和无关属性
SetText在给定页面坐标处添加文本页面对象
procedure SetTextPositions(ObjectIndex: Integer; const Positions: TPdfSingleArray)为指定文本对象设置逐字符位置。第一个字符位置默认为 0;Positions[0] 设置第二个字符位置,Positions[1] 设置第三个,依此类推。值以点为单位,且相对于文本对象原点
StampPagesFromPdf把源页面作为定位、缩放、可选旋转的 Form XObject 叠加层或衬底层盖印到一个或多个目标页面
Signature索引属性 —— 返回一条数字签名记录(签名者、原因、联系方式、字节范围)
SignatureCount文档中内嵌的数字签字段数量
property Signatures: TPdfSignatures把所有原生签名记录复制到一个生命周期安全的快照
function SignPades(const FileName: string; const Options: TPadesSignOptions): Boolean追加审批或认证 PAdES 签名,支持可选的 seed 值、证书、FieldMDP 和 DocMDP 约束,同时保留既有表单和权限条目
function SignPadesToStream(Stream: TStream; const Options: TPadesSignOptions): Boolean写入带约束的 PAdES 签名更新,包含注册的 Widget 字段、64 位 ByteRange 处理和源 xref 表示
function SignPadesWithPdfA(const FileName: string; const Options: TPadesSignOptions; PdfAOptions: TPdfASaveOptions): Boolean保存符合 PDF/A 归档标准的已签名 PAdES PDF 文档
StructureElements索引属性 —— 返回逻辑结构树元素(StructTree)的子元素
Subject返回 PDF 文档信息字典中 /Subject 条目的值
function Text(StartIndex: Integer = 0; Count: Integer = MaxInt): WString从页面提取文本字符串。StartIndex 和 Count 参数决定要提取的字符。StartIndex 参数从 0 开始计数
function TextInRectangle(Left, Top, Right, Bottom: Double): WString提取页面上矩形边界内的文本
TextPage当前活动页面的原生 PDFium 文本页面句柄
function ThumbnailDecodedData: TBytes读取内嵌页面缩略图,并解码其流滤镜
property ThumbnailCacheMaxEntries: Integer保留的内嵌与渲染缩略图条目上限,默认 64
property ThumbnailCacheMaxBytes: Int64缩略图 LRU 保留的估算像素字节上限,默认 64 MiB
property ThumbnailCacheStatistics: TPdfThumbnailCacheStatistics报告占用、存储字节、命中、未命中和逐出情况
property ThumbnailRevision: Int64缩略图使用方用来丢弃过期本地预览的单调内容修订号
function ThumbnailRawData: TBytes按存储原样读取内嵌页面缩略图,滤镜仍然生效
property Thumbnail返回当前页面 /Thumb 条目的原始字节(可选的预计算预览,通常为 64x64 光栅)
Title返回 PDF 文档信息字典中 /Title 条目的值
property TrailerEnds: TPdfCardinalArray文档每个 trailer 结束处的字节偏移,每个修订一个
procedure TransformPageAnnotations(const Matrix: FS_MATRIX)对当前页面上的每个批注应用变换矩阵
procedure TransformPageContent(const Matrix: FS_MATRIX; const Clip: TPdfRectangle)对当前页面上的每个内容对象应用变换矩阵,并带裁剪矩形
procedure TransformPageObject(Index: Integer; const Matrix: FS_MATRIX)乘以一个页面对象的变换矩阵,实现移动、缩放、旋转或倾斜
procedure TransformPageObjectClipPath(Index: Integer; const Matrix: FS_MATRIX)只变换与一个页面对象关联的裁剪几何
Transparent当前活动页面是否包含透明内容
procedure UpdateAnnotationObject(AnnotIndex: Integer; PageObj: Pointer)通知批注其某个页面对象已被修改
procedure UpdatePageObject(Index: Integer; const Value: TPdfPageObjectInfo; Changes: TPdfPageObjectChanges)只写回更改集指定的页面对象属性
procedure UpdatePage把通过 CreateAnnotation、AddImage、AddText、SetFormFieldFlagsAt 等进行的内存中编辑提交到底层 PDFium 页面
property UserPermissions返回用户密码权限位(Permissions 的子集)
UserGrantedPermissions以类型化 TPdfPermissions 集合返回用户密码权限
UserHasPermission(Permission: TPdfPermission): Boolean测试单个用户密码权限,无需手动位运算
function ValidatePades: TPadesValidationResult直接在原始源字节中验证唯一的签名档案条目和精确的 Contents 排除范围,无需重新保存 PDF
function ValidatePadesTrust(const Options: TPadesTrustValidationOptions): TPadesValidationResult验证精确的原始 ByteRange 数据、签名者信任、可选吊销证据和 RFC 3161 时间戳令牌
function ValidatePadesTrustAsync(const Options: TPadesTrustValidationOptions; const Reply: TPadesTrustValidationReply): Boolean捕获原始源,并把可取消的分阶段信任验证分派到工作线程
function ValidatePdfMac(const Password: AnsiString): TPdfMacValidationResult使用精确的原始源字节和提供的密码验证独立 PDF MAC
function ValidatePdfA: TPdfAValidationResult验证 PDF/A 标记、内容事实以及精确的 ISO 19005-1 Info 到 XMP 值等价性
function ValidatePdfE: TPdfEValidationResult检查当前打开的 PDF 是否具有 PDF/E-1 合规标记,返回包含检测到的合规级别以及所发现具体问题集合的结构化结果
ValidatePdfR验证 PDF/R-1 文件标记、元数据、加密档案、仅光栅页面内容、条带几何、颜色、有效分辨率和压缩参数
function ValidatePdfUa: TPdfUaValidationResult验证 PDF/UA-1 与 PDF/UA-2 标识、共享无障碍规则以及档案特定的 PDF 2.0 要求
function ValidatePdfVT: TPdfVTValidationResult检查当前打开的 PDF 是否具有 PDF/VT 合规标记,返回包含检测到的合规级别以及所发现问题集合的结构化结果
function ValidatePdfX: TPdfXValidationResult检查当前打开的 PDF 是否具有 PDF/X 合规标记,返回包含检测到的合规级别以及所发现具体问题集合的结构化结果
function VisitStructureElements(PageNumber; Options; Visitor; out Status): Integer把结构元素快照流式传给方法回调,不具体化页面数组
ViewerPreference索引属性 —— 返回 /ViewerPreferences 键的整数值(NumCopies、PrintScaling 等)
WebLink页面上自动检测到的网页链接的 URL 和包围矩形
WebLinkCount通过扫描页面文本识别出的自动检测网页 URL 数量
property XFA返回文档中内嵌的 XFA XML 数据包(PDF/A 2.0 已弃用该格式,但 Acrobat 生成的表单仍在使用)
property XfaFormPackets: TXfaPacketList把通过 XFA 运行时暴露的所有内嵌 XFA 数据包快照为 TXfaPacketList 集合
property XfaRuntimeAvailable: Boolean指示已加载文档的 XFA 运行时是否可用
property XfaStaticReadable: Boolean指示能否在没有 XFA 运行时的情况下读取静态 XFA 数据包
function LinkZOrderAtPoint(X, Y: Double): Integer返回页面坐标处最前方的链接批注 z 顺序,未命中链接时返回 -1
function FormFieldZOrderAtPoint(X, Y: Double): Integer返回页面坐标处最前方的表单字段 z 顺序,未命中该字段时返回 -1
function TryGetAnnotationFileAttachment(AnnotIndex: Integer; out Attachment: TPdfAnnotationAttachment; MaxBytes: Cardinal = 67108864): Boolean把有界的文件附件元数据和载荷从批注复制到自有记录
function GetLinkedAnnotationIndex(AnnotIndex: Integer; Relationship: TPdfAnnotationRelationship): Integer解析 Popup 或 IRT 关联批注索引,带悬空引用保护
function GetLinkedAnnotationChain(AnnotIndex: Integer; Relationship: TPdfAnnotationRelationship; MaxDepth: Integer = 64): TPdfIntegerArray遍历 Popup 或 IRT 关系链,带环和深度保护
function GetAnnotationDictionaryValue(AnnotIndex: Integer; const Key: WString): TPdfDictionaryValue从批注字典条目读取一个类型化值
function GetAttachmentDictionaryValue(Index: Integer; const Key: WString): TPdfDictionaryValue从内嵌文件附件字典条目读取一个类型化值
procedure SetFocusableAnnotationSubtypes(const Subtypes: array of TPdfAnnotationSubtype)限制哪些批注子类型可以通过表单句柄接收键盘焦点
function GetFocusableAnnotationSubtypes: TPdfAnnotationSubtypes返回当前可获得键盘焦点的批注子类型
procedure ClearFormSelectionRects清除通过 OnFormSelectionRect 报告的缓存表单选择矩形

TPdfView 组件

TPdfView 是一个可滚动的可视控件,用于显示 PDF 文档并与其交互,需要一个 Pdf: TPdf 引用

已发布属性(设计期)

属性类型默认值说明
Aboutstring组件版本信息
ActiveBooleanFalse激活/停用查看器
CurrentCharIndexInteger0为兼容性保留的应用程序选定字符索引
DisplayModeTPdfDisplayModedmSingleContinuous页面显示模式(dmSingleContinuous、dmTwoPageContinuous、dmTwoPageContinuousWithCover)
OptionsTRenderOptions[reLcd]渲染选项(LCD 文本、批注、灰度等)
PageShadowSizeInteger0可选的页面投影尺寸(像素),负值按 0 处理
PageShadowColorTColorclGrayPageShadowSize > 0 时使用的投影填充颜色
PageBorderColorTColorclBlack1 像素页面边框颜色
SmoothScrollBooleanFalse以定时器驱动的分段方式为行/页滚动条命令添加动画;拖动滚动块仍即时响应
LinkOptionsTPdfViewLinkOptions[loAutoGoto, loAutoOpenURI]控制链接点击事件后自动 goto、URI、launch 和 embedded-goto 的行为
AsyncRenderingBooleanFalse启用后显示加载遮罩;工作线程调度仍由应用程序负责
LoadingTextstringLoadingAsyncRendering 遮罩中绘制的文本,空字符串表示不显示遮罩
LoadingColorTColorclYellowAsyncRendering 遮罩的背景颜色
NightDuotoneInkTColor$0000C8FFreNightDuotone 低视力渲染选项使用的墨水颜色
NightDuotonePaperTColorclBlackreNightDuotone 低视力渲染选项使用的纸张颜色
ReadingHighlightColorTColorclSkyBlue控制整体阅读高亮遮罩的颜色
ReadingWordColorTColor$0000A5FF控制当前词级阅读光标使用的遮罩颜色
ReadingWordFollowBooleanTrue控制朗读跟踪期间 TPdfView 是否把当前朗读单词滚动到可视区域
PageNumberInteger1当前页码(从 1 开始)
PdfTPdfnil对 TPdf 组件的引用
RotationTRotationro0显示旋转(ro0、ro90、ro180、ro270)
ZoomDouble1.0缩放级别(1.0 = 100%)

TPdfView 专属公共属性

属性类型说明
ActualSizeZoom[PageNumber]Double按实际尺寸显示页面的缩放值
property AllowFormEvents: Boolean控制查看器转发给表单填写层的鼠标、键盘和焦点事件;页面加载与关闭不受限制
CanvasTCanvas用于在查看器上自定义绘制的画布
CharacterAngle[Index]Single字符旋转角度(弧度)
CharacterCountInteger查看器当前页面的字符数量
CharacterFontSize[Index]Double指定索引处字符的字号,FontSize[Index] 仍作为兼容别名保留
CharacterFontWeight[Index]Integer指定索引处字符的字重
CharacterOrigin[Index]TPoint查看器设备坐标中的字符原点
CharacterRectangle[Index]TRect查看器设备坐标中的字符边界
FontAscent[Index; FontSize]Single指定索引处文本对象所用字体的上伸高度
FontBaseName[Index]WString指定索引处文本对象的基础字体名称
FontData[Index]TBytes指定索引处文本对象的原始字体数据
FontDescent[Index; FontSize]Single指定索引处文本对象所用字体的下伸高度
FontFamilyName[Index]WString指定索引处文本对象的字体家族名称
FontHandle[Index]FPDF_FONT指定索引处文本对象的底层 PDFium 字体句柄
FontIsEmbedded[Index]Boolean文本对象的字体已嵌入 PDF 时为 True
FontItalicAngle[Index]Integer文本对象字体的倾斜角度
FontWeight[Index]Integer文本对象字体的字重
PageHeightZoom[PageNumber]Double使页面高度适配查看器的缩放值
PageWidthZoom[PageNumber]Double使页面宽度适配查看器的缩放值
PageZoom[PageNumber]Double使整个页面适配查看器的缩放值
StructureElementsTPdfStructureElements查看器当前页面展平后的逻辑结构元素
WindowHandleHWND查看器控件的窗口句柄

TPdfView 专属方法

function AddSearchTextHighlight(const Text: WString; MatchCase: Boolean = False; MatchWholeWord: Boolean = False): Integer在当前页面上高亮该文本的所有匹配项,并返回命中数量
方法说明
CharacterIndexAtPos(X, Y: Integer; ToleranceX, ToleranceY: Double): Integer解析查看器设备坐标点附近的字符,附近没有字符时返回 -1
DeviceToPage(X, Y: Integer; out PageX, PageY: Double): Boolean把查看器设备坐标转换为页面坐标
DeviceToPage(X, Y: Integer; var PageNumber: Integer; var PageX, PageY: Double): Boolean把查看器设备坐标转换为页面坐标,并检测所在页面
DeviceToPage(Rectangle: TRect): TPdfRectangle把查看器设备矩形转换为页面矩形
PageToDevice(PageX, PageY: Double; out X, Y: Integer): Boolean把页面坐标转换为查看器设备坐标
PageToDevice(Rectangle: TPdfRectangle): TRect把页面矩形转换为查看器设备矩形
LinkAnnotationAtPos(X, Y: Integer): Integer获取屏幕位置处的链接批注索引
LinkAnnotationAtPos(X, Y: Integer; out PageNumber: Integer): Integer获取链接批注索引并返回所在页码
WebLinkAtPos(X, Y: Integer): Integer获取屏幕位置处的网页链接索引
WebLinkAtPos(X, Y: Integer; out PageNumber: Integer): Integer获取网页链接索引并返回所在页码
PaintSelection(SelectionStart, SelectionEnd: Integer; Mask: TColor)绘制文本选区高亮
function PasteFormTextFromClipboard: Boolean把剪贴板文本粘贴到获得焦点的表单字段
FocusedFormFieldValue: WString按 FocusedFormFieldIndex 返回当前逻辑表单字段值,不依赖交互式插入符
function FocusedFormOptionSelected(Index: Integer): Boolean报告获得焦点的列表框或组合框中某个选项是否被选中
FocusedFormFieldName: WString返回当前逻辑表单字段的显示名称,优先使用 AlternateName,缺省回退到 Name
FocusedFormFieldDetails: TPdfFormFieldInfo返回当前逻辑表单字段的 TPdfFormFieldInfo
ReadingUnits: TPdfReadingUnits返回句级朗读单元,用于辅助跟读和语义导航
PageWordBoxes: TPdfWordBoxes返回带 FTextPage 字符范围和页面空间矩形的单词框,用于逐词高亮
SetReadingWord(const Word: TPdfWordBox)把一个 TPdfWordBox 高亮为 TPdfView 上当前朗读的单词
ClearReadingWord清除 TPdfView 上当前的词级阅读光标遮罩
function CopySelectedFormTextToClipboard: Boolean把获得焦点的表单字段中选中的文本复制到剪贴板
function CutSelectedFormTextToClipboard: Boolean把获得焦点的表单字段中选中的文本剪切到剪贴板
TrackReadingWordAt(PageNumber, CharIndex: Integer): Integer把页面字符偏移映射到所在 TPdfWordBox,加以高亮并返回单词索引
RemoveObject(Index: Integer; DestroyObject: Boolean = True)从当前页面移除页面对象,重新生成页面内容并重绘查看器
function SelectLineAt(Page, CharIndex: Integer): Boolean选中包含指定字符索引的整个文本行
function SetFocusedFormOptionSelected(Index: Integer; Selected: Boolean): Boolean选中或取消选中获得焦点的列表框或组合框中的某个选项
GenerateFormAppearances通过关联的 TPdf 组件重新生成 /AP 外观流(参见 TPdf.GenerateFormAppearances)
FlattenPage(nFlag: Integer = FLAT_NORMALDISPLAY): Integer把当前页面上的批注和表单控件扁平化为静态内容
SetFormFieldFlags(Index: Integer; const Flags: TPdfFormFieldFlags)按当前页面批注索引设置 AcroForm 字段标志
SetFormFieldFlagsAt(X, Y: Integer; const Flags: TPdfFormFieldFlags)在查看器控件坐标处设置 AcroForm 字段标志
function ReplaceFormTextAndKeepSelection(const Text: WString): Boolean通过 FORM_ReplaceAndKeepSelection 替换获得焦点的表单字段文本,同时保留选区状态
function FormFieldZOrderAt(X, Y: Integer): Integer返回客户区坐标处最前方的表单字段 z 顺序,未命中时返回 -1
function LinkZOrderAt(X, Y: Integer): Integer返回客户区坐标处最前方的链接批注 z 顺序,未命中时返回 -1

VCL 继承及其他属性与方法

API说明
property About: string说明 TPdfView 发布的 About 成员
Active激活或停用查看器,打开绑定的 PDF 文档并渲染所选页面
property ActualSizeZoom[PageNumber: Integer]: Double只读缩放系数,按真实物理尺寸在宿主屏幕上显示页面
procedure AddImage(const FileName: string; X, Y, Width, Height: Integer); overload向 TPdfView 当前显示的页面添加图像,并把查看器客户区坐标矩形转换为 PDF 页面坐标
function AddJpegImage(JpegImage: TStream; X, Y, Width, Height: Integer): BooleanTPdfView 包装器,转发到 TPdf.AddJpegImage
procedure AddPicture(Picture: TPicture; X, Y: Integer); overloadTPdfView 包装器,转发到 TPdf.AddPicture
Align控制 PDF 查看器在父容器中的布局方式
property AllowUserPageChange: Boolean允许用户输入(鼠标滚轮、拖动滚动条、按键)改变当前页面
property AllowUserTextSelection: Boolean控制查看器中由用户输入驱动的文本选择
Anchors指定父容器调整大小时查看器的哪些边与父容器对应边保持固定距离
property Annotation[Index: Integer]: TPdfAnnotationTPdfView 包装器,转发到 TPdf.Annotation
property AnnotationCount: IntegerTPdfView 包装器,转发到 TPdf.AnnotationCount
property AsyncRendering: Boolean可选开关,让视图在长时间渲染期间绘制小的“Loading...”遮罩,使使用自有工作线程进行离线程渲染的应用共享一致的视觉提示
property Bitmap[Index: Integer]: TBitmapTPdfView 包装器,转发到 TPdf.Bitmap
property BitmapCount: IntegerTPdfView 包装器,转发到 TPdf.BitmapCount
property Canvas: TCanvas页面渲染完成后控件暴露的绘制画布
property ChangePageOnMouseScrolling: Boolean在 SinglePage 模式下控制页面边缘的鼠标滚轮滚动是否翻到下一页
property Character[Index: Integer]: WideCharTPdfView 包装器,转发到 TPdf.Character
property CharacterAngle[Index: Integer]: SingleTPdfView 包装器,转发到 TPdf.CharacterAngle
property CharacterCount: IntegerTPdfView 包装器,转发到 TPdf.CharacterCount
property CharacterFontSize[Index: Integer]: DoubleTPdfView 包装器,转发到 TPdf.CharacterFontSize
property CharacterFontWeight[Index: Integer]: IntegerTPdfView 包装器,转发到 TPdf.CharacterFontWeight
property CharacterGenerated[Index: Integer]: BooleanTPdfView 包装器,转发到 TPdf.CharacterGenerated
function CharacterIndexAtPos(X, Y: Integer; ToleranceX, ToleranceY: Double): Integer返回当前页面上距离屏幕像素 (X, Y) 最近的字符索引,附近没有足够接近的字符时返回 -1
property CharacterIsHyphen[Index: Integer]: BooleanTPdfView 包装器,转发到 TPdf.CharacterIsHyphen
property CharacterMapError[Index: Integer]: BooleanTPdfView 包装器,转发到 TPdf.CharacterMapError
property CharacterOrigin[Index: Integer]: TPointTPdfView 包装器,转发到 TPdf.CharacterOrigin
property CharacterRectangle[Index: Integer]: TRectTPdfView 包装器,转发到 TPdf.CharacterRectangle
property Charcode[Index: Integer]: WideCharTPdfView 包装器,转发到 TPdf.Charcode
procedure ClearFormFieldFocus配合当前页面的 AcroForm 逻辑焦点游标,用于键盘、语音和无障碍工作流
procedure ClearHighlightTPdfView 包装器,转发到 TPdfView.ClearHighlight
procedure ClearReadingHighlight控制同步语音朗读播放使用的 TPdfView 阅读高亮遮罩
procedure ClearReadingWord清除 TPdfView 上当前的词级阅读光标遮罩
procedure ClearSelection清除当前文本选区并使视图失效重绘
Color设置绘制在页面矩形之间以及文档边缘周围的背景颜色
Constraints定义父容器调整大小时 PDF 查看器允许达到的最小和最大宽度与高度
function CopySelectionToClipboard: Boolean通过 Windows 或原生 LCL 系统剪贴板复制选中的 Unicode 文本
constructor Create(AOwner: TComponent); override创建 TPdfView 控件,并初始化渲染、滚动、选择和表单交互状态
procedure CreateAnnotation(const Annotation: TPdfAnnotation)TPdfView 包装器,转发到 TPdf.CreateAnnotation
property CurrentCharIndex: Integer只读的从 0 开始的字符索引,对应当前鼠标光标(或最近一次命中测试的点)
procedure DeleteAnnotation(Index: Integer)TPdfView 包装器,转发到 TPdf.DeleteAnnotation
destructor Destroy; override在 TPdfView 销毁前释放查看器资源、渲染缓冲区和文档订阅
function DeviceToPage(X, Y: Integer; out PageX, PageY: Double): Boolean; overload把视图内的屏幕像素 (X, Y) 转换为当前页面上的 PDF 用户空间点
property DisplayMode: TPdfDisplayMode布局模式:单页、连续、双页、双页连续,可带或不带封面
property DragCursor说明 TPdfView 发布的 DragCursor 成员
property DragKind说明 TPdfView 发布的 DragKind 成员
property DragMode说明 TPdfView 发布的 DragMode 成员
Enabled控制 PDF 查看器是否接受来自鼠标和键盘的用户输入
property Find: FPDF_SCHHANDLETPdfView 包装器,转发到 TPdf.Find
function FindFirst(const Text: WString; Options: TSearchOptions= []; StartIndex: Integer= 0; DirectionUp: Boolean= True): Integer开始搜索指定文本。StartIndex 从 0 开始,-1 表示页面末尾;DirectionUp 参数决定此次搜索的方向
function FindNext: IntegerTPdfView 包装器,转发到 TPdf.FindNext
function FindPrevious: IntegerTPdfView 包装器,转发到 TPdf.FindPrevious
property FitMode: TPdfFitMode控制当前页面在查看器客户区中的呈现方式;Resize 和 PageNumber 变化时会自动重新应用,使页面尺寸混杂的长文档始终保持取景完整
function FlattenPage(nFlag: Integer = FLAT_NORMALDISPLAY): IntegerTPdfView 包装器,转发到 TPdf.FlattenPage
function FocusFormField(Index: Integer): Boolean配合当前页面的 AcroForm 逻辑焦点游标,用于键盘、语音和无障碍工作流
function FocusNextFormField: Integer配合当前页面的 AcroForm 逻辑焦点游标,用于键盘、语音和无障碍工作流
function FocusPreviousFormField: Integer配合当前页面的 AcroForm 逻辑焦点游标,用于键盘、语音和无障碍工作流
function FocusedFormFieldDetails: TPdfFormFieldInfo返回当前逻辑表单字段的 TPdfFormFieldInfo
function FocusedFormFieldIndex: Integer配合当前页面的 AcroForm 逻辑焦点游标,用于键盘、语音和无障碍工作流
function FocusedFormFieldName: WString返回当前逻辑表单字段的显示名称,优先使用 AlternateName,缺省回退到 Name
function FocusedFormFieldText: WString配合当前页面的 AcroForm 逻辑焦点游标,用于键盘、语音和无障碍工作流
function FocusedFormFieldTextDirection: TPdfFormTextDirection读取查看器中获得焦点控件在内存中的文本方向
function FocusedFormFieldValue: WString按 FocusedFormFieldIndex 返回当前逻辑表单字段值,不依赖交互式插入符
property FontAscent[Index: Integer; FontSize: Single]: SingleTPdfView 包装器,转发到 TPdf.FontAscent
property FontBaseName[Index: Integer]: WStringTPdfView 包装器,转发到 TPdf.FontBaseName
property FontData[Index: Integer]: TBytesTPdfView 包装器,转发到 TPdf.FontData
property FontDescent[Index: Integer; FontSize: Single]: SingleTPdfView 包装器,转发到 TPdf.FontDescent
property FontFamilyName[Index: Integer]: WStringTPdfView 包装器,转发到 TPdf.FontFamilyName
property FontFlags[Index: Integer]: IntegerTPdfView 包装器,转发到 TPdf.FontFlags
property FontHandle[Index: Integer]: FPDF_FONTTPdfView 包装器,转发到 TPdf.FontHandle
property FontIsEmbedded[Index: Integer]: BooleanTPdfView 包装器,转发到 TPdf.FontIsEmbedded
property FontItalicAngle[Index: Integer]: IntegerTPdfView 包装器,转发到 TPdf.FontItalicAngle
property FontSize[Index: Integer]: DoubleTPdfView 包装器,转发到 TPdf.FontSize
property FontWeight[Index: Integer]: IntegerTPdfView 包装器,转发到 TPdf.FontWeight
function FormCanRedo: Boolean报告获得焦点的 AcroForm 控件是否至少有一个已撤销编辑可供重做
function FormCanUndo: Boolean报告获得焦点的 AcroForm 控件是否至少有一个可撤销的编辑
property FormField[Index: Integer]: WStringTPdfView 包装器,转发到 TPdf.FormField
property FormFieldAt[X, Y: Integer]: WStringTPdfView 包装器,转发到 TPdf.FormFieldAt
property FormFieldCount: IntegerTPdfView 包装器,转发到 TPdf.FormFieldCount
property FormFieldInfo[Index: Integer]: TPdfFormFieldInfoTPdfView 包装器,转发到 TPdf.FormFieldInfo
property FormFieldInfoAt[X, Y: Integer]: TPdfFormFieldInfoTPdfView 包装器,转发到 TPdf.FormFieldInfoAt
function FormFieldTypeAt(X, Y: Integer; out FieldType: TPdfFormFieldType): Boolean把视图像素转换为页面坐标并执行原生字段类型命中测试
function FormFieldTabOrder: TPdfIntegerArray配合当前页面的 AcroForm 逻辑焦点游标,用于键盘、语音和无障碍工作流
function FormRedo: Boolean重做获得焦点的 AcroForm 控件上最近一次撤销的编辑,驱动 PDFium 的控件级重做历史
function FormUndo: Boolean撤销获得焦点的 AcroForm 控件上最近一次编辑,驱动 PDFium 的控件级撤销历史
procedure GenerateFormAppearancesTPdfView 包装器,转发到 TPdf.GenerateFormAppearances
function GetSelectedFormText: WString返回视图活动页面上获得焦点的 AcroForm 控件内当前选中的文本
property HasFormFieldAt[X, Y: Integer]: BooleanTPdfView 包装器,转发到 TPdf.HasFormFieldAt
function HasSelection: Boolean返回查看器当前是否选中了任何文本
property HighlightColor: TColorHighlightSearchText 返回的每个匹配项上所绘矩形的颜色,默认 clYellow;作为已发布属性便于应用程序定制高亮
function HighlightSearchText(const Text: WString; MatchCase: Boolean= False; MatchWholeWord: Boolean= False): IntegerTPdfView 包装器,转发到 TPdfView.HighlightSearchText
property Image[Index: Integer]: TPdfImageTPdfView 包装器,转发到 TPdf.Image
property ImageCount: IntegerTPdfView 包装器,转发到 TPdf.ImageCount
property LinkAnnotation[PageNumber, Index: Integer]: TLinkAnnotationTPdfView 包装器,转发到 TPdf.LinkAnnotation
function LinkAnnotationAtPos(X, Y: Integer; out PageNumber: Integer): Integer; overload返回屏幕像素 (X, Y) 处的链接批注索引,未命中返回 -1
property LinkAnnotationCount[PageNumber: Integer]: IntegerTPdfView 包装器,转发到 TPdf.LinkAnnotationCount
property LinkOptions: TPdfViewLinkOptions已发布集合,控制用户点击链接时视图自动跟随 PDFium 四种链接动作类型中的哪几种
LoadingColor页面仍在渲染时绘制的“加载中”占位内容的填充颜色
LoadingText异步渲染仍在进行时显示在页面中央的文本
property NightDuotoneInk: TColor控制 reNightDuotone 低视力渲染选项使用的墨水颜色
property NightDuotonePaper: TColor控制 reNightDuotone 低视力渲染选项使用的纸张颜色
property ObjectBitmap[Index: Integer]: TBitmapTPdfView 包装器,转发到 TPdf.ObjectBitmap
property ObjectBounds[Index: Integer]: TPdfRectangleTPdfView 包装器,转发到 TPdf.ObjectBounds
property ObjectCount: IntegerTPdfView 包装器,转发到 TPdf.ObjectCount
property ObjectHandle[Index: Integer]: PointerTPdfView 包装器,转发到 TPdf.ObjectHandle
property ObjectTransparent[Index: Integer]: BooleanTPdfView 包装器,转发到 TPdf.ObjectTransparent
property ObjectType[Index: Integer]: TObjectTypeTPdfView 包装器,转发到 TPdf.ObjectType
property Options: TRenderOptions渲染提示与 TPdfView 渲染后低视力选项的集合
property Page: FPDF_PAGETPdfView 包装器,转发到 TPdf.Page
property PageBorderColor: TColor绘制在每个页面矩形周围的 1 像素边框颜色
property PageBounds: TPdfRectangleTPdfView 包装器,转发到 TPdf.PageBounds
property PageColor: TColor绘制在渲染后 PDF 页面下方的背景颜色,与周围控件的 Color 相互独立。默认值为 clWhite,即使宿主控件的 Color 采用深色主题,PDF 页面仍保持纸面白色
property PageCount: IntegerTPdfView 包装器,转发到 TPdf.PageCount
property PageHeight: DoubleTPdfView 包装器,转发到 TPdf.PageHeight
property PageHeightZoom[PageNumber: Integer]: Double使页面高度适配视图的只读缩放系数
property PageLabel: WStringTPdfView 包装器,转发到 TPdf.PageLabel
property PageNumber: IntegerTPdfView 包装器,转发到 TPdf.PageNumber
property PageRotation: TRotationTPdfView 包装器,转发到 TPdf.PageRotation
PageShadowColor绘制在每个页面矩形下方的投影填充颜色
property PageShadowSize: Integer连续模式下绘制在每个页面周围的柔和阴影宽度(以像素为单位)
function PageToDevice(PageX, PageY: Double; out X, Y: Integer): Boolean; overloadDeviceToPage 的逆运算:把 PDF 用户空间点转换为视图内的屏幕像素
property PageWidth: DoubleTPdfView 包装器,转发到 TPdf.PageWidth
property PageWidthZoom[PageNumber: Integer]: Double使页面宽度适配视图的只读缩放系数
function PageWordBoxes: TPdfWordBoxes返回当前 TPdfView 页面上单词的 TPdfWordBox 记录,含字符范围和页面空间矩形
property PageZoom[PageNumber: Integer]: Double在当前 DisplayMode 下使当前页面适配视图所需的只读缩放值
procedure PaintSelection(SelectionStart, SelectionEnd: Integer; Mask: TColor)TPdfView 包装器,转发到 TPdfView.PaintSelection
property ParentShowHint说明 TPdfView 发布的 ParentShowHint 成员
property Pdf: TPdf引用 TPdf 组件,其文档由查看器渲染
PopupMenu把 TPopupMenu 关联到 PDF 查看器,右键点击页面时弹出上下文菜单
ReadableContent返回面向屏幕阅读器、语音合成和无障碍工作流的语义可读内容片段
property ReadingHighlightColor: TColor控制同步语音朗读播放使用的 TPdfView 阅读高亮遮罩
function ReadingUnits: TPdfReadingUnits从当前 TPdfView 页面构建句级 TPdfReadingUnit 记录
property ReadingWordColor: TColor控制当前词级阅读光标使用的遮罩颜色
property ReadingWordFollow: Boolean控制朗读跟踪期间 TPdfView 是否把当前朗读单词滚动到可视区域
property Rectangle[Index: Integer]: TRectTPdfView 包装器,转发到 TPdf.Rectangle
function RectangleCount(StartIndex: Integer = 0; Count: Integer = MaxInt): IntegerTPdfView 包装器,转发到 TPdf.RectangleCount
procedure ReloadPageTPdfView 包装器,转发到 TPdf.ReloadPage
procedure RemoveObject(Index: Integer; DestroyObject: Boolean = True)TPdfView 包装器,转发到 TPdf.RemoveObject
procedure RenderPage(DeviceContext: HDC; Left, Top, Width, Height: Integer; Rotation: TRotation = ro0; Options: TRenderOptions = [])把页面内容渲染到设备(屏幕、位图或打印机)
function RenderTile(Left, Top, Width, Height, PageWidth, PageHeight: Integer; Rotation: TRotation = ro0; Options: TRenderOptions = []): TBitmap把页面的矩形区域渲染为新位图。返回的位图需手动释放
property Rotation: TRotation应用于渲染页面的视觉旋转(ro0 / ro90 / ro180 / ro270)
procedure SelectAll选中查看器当前显示页面上的全部字符
function SelectAllFormText: Boolean选中视图活动页面上获得焦点的 AcroForm 控件内的全部字符(相当于控件内按 Ctrl+A)
function SelectTextRange(Page, StartIndex, Count: Integer): Boolean读写 TPdfView 的编程式文本选择模型,无需用户鼠标输入
function SelectWordBox(const Word: TPdfWordBox): Boolean在当前 TPdfView 页面上选中一个 TPdfWordBox 表示的文本范围
function SelectWordSpan(const Words: TPdfWordBoxes; StartIndex, EndIndex: Integer): Boolean把同一页面上的一段 TPdfWordBox 记录作为一个 TPdfView 文本选区选中
function SelectedText: WString以宽字符串返回当前选中的文本
function SelectionCharCount: Integer返回当前选中的字符总数
property SelectionColor: TColor用户拖拽文本选区遮罩的填充颜色
function SelectionRanges: TPdfUserSelectionRanges读写 TPdfView 的编程式文本选择模型,无需用户鼠标输入
function SelectionRectangles: TPdfRectangles读写 TPdfView 的编程式文本选择模型,无需用户鼠标输入
procedure SetFormFieldFlags(Index: Integer; const Flags: TPdfFormFieldFlags)TPdfView 包装器,转发到 TPdf.SetFormFieldFlags
procedure SetFormFieldFlagsAt(X, Y: Integer; const Flags: TPdfFormFieldFlags)TPdfView 包装器,转发到 TPdf.SetFormFieldFlagsAt
function SetFocusedFormFieldTextDirection(Direction: TPdfFormTextDirection): Boolean更改获得焦点控件在内存中的文本方向并重绘页面场景
procedure SetReadingHighlight(const Rects: TPdfRectangles; PageNumber: Integer)控制同步语音朗读播放使用的 TPdfView 阅读高亮遮罩
procedure SetReadingWord(const Word: TPdfWordBox)把一个 TPdfWordBox 高亮为 TPdfView 上当前朗读的单词
function SetSelection(const Ranges: TPdfUserSelectionRanges): Boolean读写 TPdfView 的编程式文本选择模型,无需用户鼠标输入
ShowHint启用或禁用鼠标悬停在 PDF 查看器上时显示的提示气泡
property SmoothScroll: Boolean为行/页滚动条命令启用定时器驱动的分段动画。拖动滚动块仍即时响应
property StructureElements: TPdfStructureElementsTPdfView 包装器,转发到 TPdf.StructureElements
TabOrder定义 PDF 查看器在父容器 Tab 循环中的位置
TabStop指示用户能否通过按 Tab 键把焦点交给 PDF 查看器
function Text(StartIndex: Integer = 0; Count: Integer = MaxInt): WStringTPdfView 包装器,转发到 TPdf.Text
function TextInRectangle(Left, Top, Right, Bottom: Integer): WString; overloadTPdfView 包装器,转发到 TPdf.TextInRectangle
property TextPage: FPDF_TEXTPAGETPdfView 包装器,转发到 TPdf.TextPage
property Thumbnail: TBitmapTPdfView 包装器,转发到 TPdf.Thumbnail
property Touch说明 TPdfView 发布的 Touch 成员
function TrackReadingWordAt(PageNumber, CharIndex: Integer): Integer把页面字符偏移映射到所在 TPdfWordBox,加以高亮并返回单词索引
property Transparent: BooleanTPdfView 包装器,转发到 TPdf.Transparent
procedure UpdatePageTPdfView 包装器,转发到 TPdf.UpdatePage
Visible显示或隐藏 PDF 查看器
property WebLink[PageNumber, Index: Integer]: TWebLinkTPdfView 包装器,转发到 TPdf.WebLink
function WebLinkAtPos(X, Y: Integer; out PageNumber: Integer): Integer; overload返回屏幕像素 (X, Y) 处的网页链接索引
property WebLinkCount[PageNumber: Integer]: IntegerTPdfView 包装器,转发到 TPdf.WebLinkCount
property WindowHandle: HWND控件的原生窗口或 widget 句柄,按所选平台和 widget set 的语义使用
property Zoom: Double缩放系数,1.0 = 100%(72 DPI 下 1 个 PDF 点 = 1 个屏幕像素)

TPdfView 事件

事件类型说明
OnPageChangeTNotifyEvent滚动期间显示的页面改变时触发
OnPageNumberChangedTNotifyEventPageNumber 属性被修改时触发
OnAnnotationLinkClickTPdfViewAnnotationLinkClickEvent批注链接自动动作执行前触发;设置 Handled 可阻止默认动作
OnWebLinkClickTPdfViewWebLinkClickEvent自动检测的网页链接自动动作执行前触发;设置 Handled 可阻止调用 ShellExecute
OnPaintTNotifyEvent自定义绘制操作期间触发
property OnAnnotationLinkClick: TPdfViewAnnotationLinkClickEvent用户点击 LinkOptions 未自动处理的 /Annot Subtype Link 时触发
property OnCanResize说明 TPdfView 发布的 OnCanResize 事件
OnClick用户在查看器内点击(鼠标左键)时发生
property OnConstrainedResize说明 TPdfView 发布的 OnConstrainedResize 事件
property OnContextPopup说明 TPdfView 发布的 OnContextPopup 事件
OnDblClick用户在查看器内双击(鼠标左键)时发生
property OnDragDrop说明 TPdfView 发布的 OnDragDrop 事件
property OnDragOver说明 TPdfView 发布的 OnDragOver 事件
property OnEndDock说明 TPdfView 发布的 OnEndDock 事件
property OnEndDrag说明 TPdfView 发布的 OnEndDrag 事件
property OnEnter说明 TPdfView 发布的 OnEnter 事件
property OnExit说明 TPdfView 发布的 OnExit 事件
property OnFormFieldFocusChange: TPdfFormFieldFocusEventTPdfView 移动或清除 AcroForm 字段逻辑焦点游标时触发
property OnGesture说明 TPdfView 发布的 OnGesture 事件
property OnKeyDown: TKeyEvent控件持有焦点时按下按键触发
property OnKeyPress: TKeyPressEvent键盘每产生一个字符时触发
property OnKeyUp: TKeyEvent查看器控件持有焦点时释放按键发生
property OnMouseActivate说明 TPdfView 发布的 OnMouseActivate 事件
property OnMouseDown: TMouseEvent用户在视图上按下鼠标键触发
property OnMouseEnter说明 TPdfView 发布的 OnMouseEnter 事件
property OnMouseLeave说明 TPdfView 发布的 OnMouseLeave 事件
property OnMouseMove: TMouseMoveEvent鼠标在视图上移动时触发
property OnMouseUp: TMouseEvent用户释放鼠标键触发
property OnMouseWheel: TMouseWheelEvent鼠标滚轮在视图上滚动时触发
property OnMouseWheelDown说明 TPdfView 发布的 OnMouseWheelDown 事件
property OnMouseWheelUp说明 TPdfView 发布的 OnMouseWheelUp 事件
property OnPageChange: TNotifyEvent当前页面因任何原因改变时触发
property OnPageNumberChanged: TNotifyEvent滚动导致可见页码改变时触发
property OnPaint: TNotifyEvent视图完成当前页面绘制后触发
property OnResize: TNotifyEvent控件客户区尺寸变化时触发
property OnSelectionChange: TNotifyEvent实际生效的文本选择范围发生变化时触发
property OnStartDock说明 TPdfView 发布的 OnStartDock 事件
property OnStartDrag说明 TPdfView 发布的 OnStartDrag 事件
property OnWebLinkClick: TPdfViewWebLinkClickEvent用户点击 LinkOptions 未自动处理的文本检测网页 URL 时触发

TPdfDocumentSearch 类

支持延迟执行的前向或后向全文档文本搜索,仅为当前页面保留原生 PDFium 句柄

方法

方法说明
Next返回一个 TPdfDocumentSearchResult,包含页面、字符范围、文本和页面空间矩形

属性

成员类型说明
CurrentPageInteger当前正在搜索的页面(从 1 开始)
DirectionTPdfDocumentSearchDirection前向或后向遍历
FinishedBoolean是否已无法返回更多结果
CancelledBoolean取消令牌是否已结束搜索
MatchCountUInt64已返回的结果数量

TPdfProgressiveDocument 类

TPdfProgressiveDocument 派生自 TPdf,在远程或持续增长的随机访问流接收请求字节范围期间保持 PDFium 原生可用性会话存活

方法

方法说明
BeginProgressiveLoad启动逻辑尺寸的随机访问会话,可带初始连续前缀
CheckDocumentAvailability询问 PDFium 文档元数据是否就绪,并返回合并后的下载提示
OpenProgressiveDocument打开原生线性化文档或已补全的非线性化自定义流
CheckFormAvailability为表单填写初始化设置门槛,并返回所需的额外字节范围
LoadAvailablePage在所需字节到达后放行并激活一个从 1 开始计数的页面
CancelProgressiveLoad按依赖顺序释放所有渐进加载状态

属性和事件

成员类型说明
ProgressiveLoadingBoolean原生可用性会话是否存活
LogicalFileSizeUInt64PDF 内容的最终长度
AvailableByteCountUInt64单调递增的可读前缀长度
LinearizationTPdfLinearization原生线性化判定结果
FirstAvailablePageNumberInteger第一个可用页面的页码(从 1 开始)
OnDataAvailableTPdfDataAvailableEvent稀疏范围缓存的可用性回调
RangeRequestsTPdfRangeRequestScheduler由原生可用性提示填充的自有优先级调度器

TPdfRangeRequestScheduler 类

线程安全且与传输无关的调度器,用于合并、排定优先级、拆分、重试、取消和统计稀疏 PDF 字节范围请求

核心工作流

方法说明
EnqueueHints添加缺失的原生字节范围,并抢占与之重叠的较低优先级传输
TryDequeue把最高优先级的请求移入进行中集合
CompleteRequest在字节存储完成后提交完整或部分的传输响应
FailRequest在 MaxRetryCount 限制内重试或放弃失败的传输尝试
MarkAvailable记录外部字节并取消重复的待处理或进行中工作
Cancel使当前代失效,并把活动的传输请求通知宿主

TPdfStreamInspector 类

来自 FPdfStreamInspect 单元,对任意物理 PDF 流对象提供只读的有界清点和提取

核心工作流

成员说明
Create检查字节数组或可定位流,同时保留调用方的流位置
CopyRawData把完整的编码载荷或经过校验的原始字节窗口复制到目标流
DecodeData按声明顺序应用受支持的通用过滤器,并报告剩余的原生编解码器边界
Infos返回对象偏移、长度、过滤器元数据、DecodeParms 以及原生访问分类

TPdfReadingSession 组件

TPdfReadingSession 是与 TTS 实现无关的朗读状态机,协调 TPdfSpokenText 文本块、宿主语音引擎回调以及 TPdfView 词光标高亮

方法

方法说明
Create(AOwner: TComponent)以默认的估算语音节奏初始化空闲会话
LoadSpoken(const Chunks: TPdfSpokenTexts)停止当前播放,并按顺序复制待朗读的文本块
Play从第一个已加载的文本块开始播放
PlayFrom(ChunkIndex: Integer)从指定文本块索引(从 0 开始)开始播放
Pause从 pssSpeaking 转入 pssPaused 并触发 OnPauseRequest
Resume恢复暂停的播放;启用 ResumeRestartsChunk 时重新朗读当前文本块
Stop取消播放,重置文本块与单词游标,并清除关联 TPdfView 的单词高亮
FeedSpokenPosition(SpokenOffset: Integer)把语音引擎偏移映射回 PDF 页面字符,并移动 TPdfView 词光标
Tick(SpeechStillBusy: Boolean; ElapsedMs: Cardinal = 0)推进到下一个文本块、结束播放,或在语音仍忙时估算当前单词

属性

属性类型说明
StateTPdfReadingSessionState当前状态:pssIdle、pssSpeaking 或 pssPaused
ChunkCountInteger已加载朗读文本块的数量
CurrentChunkInteger活动文本块索引(从 0 开始),无活动文本块时为 -1
CurrentWordInteger当前文本块内活动单词索引(从 0 开始),未知时为 -1
ViewTPdfView接收词光标更新的查看器
EstimatePacingBoolean对不提供单词位置信号的语音引擎,用已用时间估算单词位置
EstimatedWordsPerMinuteInteger估算节奏使用的语速,默认 175
ResumeRestartsChunkBoolean对暂停会取消排队语音的引擎,让 Resume 重新朗读当前文本块

事件

事件类型说明
OnSpeakTPdfReadingSpeakEvent宿主应当朗读一个文本块时触发
OnCancelRequestTNotifyEvent宿主应当取消语音时触发
OnPauseRequestTNotifyEvent宿主应当暂停语音时触发
OnResumeRequestTNotifyEvent宿主应当在不重启文本块的情况下恢复语音时触发
OnChunkChangeTPdfReadingChunkEvent活动文本块变化时触发
OnWordChangeTPdfReadingWordEvent活动单词变化时触发
OnFinishedTNotifyEvent最后一个文本块完成后触发

TPdfThumbnailView 组件

TPdfThumbnailView 是来自 FPdfThumbnail 单元的可滚动侧栏控件,链接到一个 TPdf 组件,每行渲染一个页面缩略图用于页面导航

已发布属性

属性类型默认值说明
PdfTPdfnil用于缩略图渲染的文档组件
CurrentPageIndexInteger0选中页索引(从 1 开始),0 表示未选中页面
ThumbnailWidthInteger120缩略图目标宽度,钳制在 48..800 之间
ThumbnailHeightInteger160缩略图目标高度,钳制在 48..800 之间
TextColorTColorclBlack页码标题颜色
HoverColorTColorclMoneyGreen悬停缩略图所在行的行高亮颜色
SelectionColorTColorclHighlightCurrentPageIndex 所在行的行高亮颜色
BorderColorTColorclGray缩略图边框颜色

事件

事件类型说明
OnPageClickTPdfThumbnailClickEvent用户左键点击缩略图行时触发;APageIndex 从 1 开始

数据类型与枚举

核心类型

类型定义
WString用于 Unicode 文本的宽字符串类型
TPdfIntegerArrayInteger 值的动态数组
TPdfSingleArraySingle 值的动态数组,用于文本对象字符位置
TPdfPrintPageRange记录:StartPage, EndPage: Integer
TPdfPrintPageRanges打印页面范围(从 1 开始计数)的动态数组
TPdfPoint记录:X, Y: Double
TPdfRectangle记录:Left, Top, Right, Bottom: Double
TPdfDocumentSearchDirectiondsdForward, dsdBackward
TPdfDocumentSearchResult存储从 1 开始的页码、原生字符范围、匹配文本和页面空间矩形
TPdfReadingUnit存储一个朗读单元,包含文本、语义种类、页面、高亮矩形、源索引、替代文本状态和语言
TPdfReadingUnitsTPdfReadingUnit 记录的动态数组
TPdfWordBox存储一个单词、其 FTextPage 字符范围、页面空间矩形和从 1 开始的页码
TPdfWordBoxesTPdfWordBox 记录的动态数组
TPdfSpokenSpan把一段语音引擎文本映射回源页面字符范围
TPdfSpokenSpansTPdfSpokenSpan 记录的动态数组
TPdfSpokenText语音文本及其到 PDF 页面文本的跨度映射
TPdfSpokenTextsTPdfSpokenText 文本块的动态数组
TPdfReadingSessionStatepssIdle, pssSpeaking, pssPaused
TPdfReadingSpeakEventTPdfReadingSession.OnSpeak 的回调签名
TPdfReadingChunkEventTPdfReadingSession.OnChunkChange 的回调签名
TPdfReadingWordEventTPdfReadingSession.OnWordChange 的回调签名
TPdfStreamAdapter把可定位 TStream 暴露为 PDFium FPDF_FILEACCESS 回调的类
TPdfRandomAccessStore线程安全的可定位流,具备有界内存、安全临时文件溢写、定位 I/O、传输、刷新和存储诊断
TPdfStorageBackendpsbMemory, psbTemporaryFile
TPdfXObjectCreateXObjectFromPage 创建的可复用 Form XObject 句柄的生命周期包装
TPdfFileIdentifierTypefidPermanent, fidChanging
TPdfPageBoxpbMedia, pbCrop, pbBleed, pbTrim, pbArt
TPdfJavaScriptAction记录:Name, Script: WString
TPdfJavaScriptActionsTPdfJavaScriptAction 记录的动态数组
TPdfVersionpvUnknown, pv10, pv11, pv12, pv13, pv14, pv15, pv16, pv17;从 pv13 到 pv17 的显式 SaveAs 目标会按所选 PDF 版本规范化并校验
TPdfVersionInfo来自 FPdfCompress 单元的记录,分立承载头部、目录、实际核心版本与 Adobe 开发者扩展版本信息
TRotationro0, ro90, ro180, ro270
TSaveOptionsaNone, saIncremental, saNoIncremental, saRemoveSecurity
TObjectTypeotUnknown, otText, otPath, otImage, otShading, otForm
TPageModepmNone, pmOutline, pmThumbs, pmFullScreen, pmOptionalContentGroup, pmAttachments, pmUnknown
TPdfActionacUnsupported, acGoto, acGotoRemote, acUri, acLaunch
TPdfPrintModeprEmf, prTextOnly, prPostScript2, prPostScript3, prPostScript2PassThrough, prPostScript3PassThrough, prEmfImageMasks, prPostScript3Type42, prPostScript3Type42PassThrough
TPdfDisplayModedmSingleContinuous, dmTwoPageContinuous, dmTwoPageContinuousWithCover
TPdfViewLinkOptionloAutoGoto, loAutoOpenURI, loAutoLaunch, loAutoEmbeddedGoto
TPdfViewLinkOptionsTPdfViewLinkOption 值的集合

搜索与渲染选项

类型取值
TSearchOptionseCaseSensitive, seWholeWord, seConsecutive
TSearchOptionsTSearchOption 的集合
TRenderOptionreAnnotations, reLcd, reNoNativeText, reGrayscale, reDebugInfo, reNoCatchException, reLimitCache, reHalftone, rePrinting, reReverseByteOrder, reNoSmoothText, reNoSmoothImage, reNoSmoothPath, reInvert, reNightDuotone
TRenderOptionsTRenderOption 的集合

绘图类型

类型取值
TPdfFillModefmNone, fmAlternate, fmWinding
TPdfLineCaplcDefault, lcButt, lcRound, lcProjectingSquare
TPdfLineJoinljDefault, ljMiter, ljRound, ljBevel
TPdfPathSegmentTypepstUnknown, pstLineTo, pstBezierTo, pstMoveTo
TPdfOverlayPlacementopTopLeft, opTopCenter, opTopRight, opMiddleLeft, opCenter, opMiddleRight, opBottomLeft, opBottomCenter, opBottomRight, opStretch, opCustom
TPdfBlendModebmDefault, bmMultiply, bmScreen, bmOverlay, bmDarken, bmLighten, bmColorDodge, bmColorBurn, bmHardLight, bmSoftLight, bmDifference, bmExclusion, bmHue, bmSaturation, bmColor, bmLuminosity

批注类型

类型说明
TPdfAnnotationSubtype批注子类型:Text, Link, FreeText, Line, Square, Circle, Polygon, PolyLine, Highlight, Underline, Squiggly, StrikeOut, Stamp, Caret, Ink, Popup, FileAttachment, Sound, Movie, Widget, Screen, PrinterMark, TrapNet, Watermark, 3D, RichMedia, XFAWidget, Redact
TPdfAnnotationFlag标志:afInvisible, afHidden, afPrint, afNoZoom, afNoRotate, afNoView, afReadOnly, afLocked, afToggleNoView
TPdfAnnotation记录,包含子类型、标志、颜色、文本、矩形以及直至 AttachmentPointSets 的全部标记四边形集合

表单类型

类型说明
TPdfFormTypeftUnknown, ftNone, ftAcroForm, ftXfaFull, ftXfaForeground
TPdfFormFieldTypefiUnknown, fiPushButton, fiCheckBox, fiRadioButton, fiComboBox, fiListBox, fiTextField, fiSignature
TPdfFormFieldFlagffReadOnly, ffRequired, ffNoExport, ffMultiline, ffChoiceCombo, ffChoiceEdit, ffPassword, ffChoiceMultiSelect
TPdfFormFieldInfo记录,包含 FieldType、Flags、Name、Value、AlternateName 等属性

PAdES 档案时间戳类型

类型说明
TPadesArchiveTimestampOptionsTSA URL、nonce、令牌容量、可选 DSS 刷新标志、完整替换的 DSS 材料以及 Default
TPadesArchiveTimestampReport源与结果的 PAdES 级别、先前与结果的 Document Time-stamp 计数、源与结果字节长度、DSS 更新状态、生成时间、策略 OID 和返回的 nonce

PAdES 签名算法类型

类型说明
TPadesSignatureAlgorithmFamilypsafUnknown, psafRsa, psafEcdsa, psafEd25519 或 psafEd448
TPadesSignatureAlgorithmInfoCMS 摘要与签名 OID、X.509 公钥与命名曲线 OID、参数存在性与 SHAKE 输出长度、算法族以及独立的策略状态

PAdES 修订分析类型

类型说明
TPadesRevisionAnalysisStatusprasNotChecked, prasNoLaterChanges, prasAllowed, prasDisallowed, prasSuspicious 或 prasIndeterminate
TPadesRevisionChangeKind对 xref、签名、验证材料、表单字段、批注、页面内容、文档结构、元数据、活动内容、已删除、已压缩或未知更改进行分类
TPadesRevisionObjectChange报告修订、对象号与生成号、源偏移或对象流编号及索引、分类、裁决、权威方和重定义状态
TPadesSignatureRevisionAnalysis报告单个签名覆盖的修订、DocMDP 与 FieldMDP 策略、后续修订、风险、状态和对象更改
TPadesRevisionAnalysisReport聚合源状态、修订与签名计数、风险、状态、逐签名分析和解析器错误

PAdES 证据报告类型

类型说明
TPadesEvidenceReportOptions信任设置,以及源字节、签名、修订更改、验证材料、存储字节和 VRI 预算
TPadesValidationMaterialEvidence按对象编号、存储长度、种类和 SHA-256 标识一条已存储的 DSS 证书、OCSP 响应或 CRL
TPadesVriEvidence把一个 VRI 键和字典对象映射到其证书、OCSP 和 CRL 对象引用
TPadesSignatureEvidence为单个签名关联 PDFium 事实、ByteRange、内容与 VRI 哈希、CMS 策略、验证状态、信任路径哈希、DSS/VRI 覆盖情况和修订裁决
TPadesEvidenceReport聚合验证、修订、DSS、PDFium、截断和逐签名证据,支持 ToJson 与 ToCsv 导出

图像编解码器、文档差异与拼版类型

类型或函数说明
TPdfImageCodecpicKeepOriginal, picJpeg, picJpx, picCcittGroup4 或 picFlate
TPdfImageCodecs允许的 TPdfImageCodec 值的集合
TPdfImageCodecCandidate用于编解码器选择的图像事实与实测编码字节长度
TPdfImageCodecDecision选中的编解码器、原始与选中字节数、节省量以及替换决策
SelectPdfImageCodec选择最小的合格实测编码,未达到请求节省量时不替换原始数据
TPdfDocumentDiffOptions渲染尺寸、颜色容差、文本与几何门槛、页面预算以及 Default
TPdfPageDifference单页的文本、几何、旋转、像素计数和变更边界证据
TPdfPageDifferencesTPdfPageDifference 记录的动态数组
TPdfDocumentDiffReport聚合等价结果、页面计数、变更页面、像素、截断情况和详细差异
TPdfImpositionModepimNUp 或 pimBooklet
TPdfImpositionOptions输出尺寸、网格、装订、栏间距、出血、爬移、反页选项以及 Default
TPdfImpositionSlot单个拼版位置的纸张、面、槽位、源页面、爬移和可用边界
TPdfImpositionSlotsTPdfImpositionSlot 记录的动态数组
TPdfImpositionPlan源与补齐计数、纸张与面数、输出网格与几何以及有序槽位
TPdfImpositionExecutionReport原生导入、导入页面、唯一源、空白槽位、XObject 模板、表单对象、内容生成、输出页面和原生 N-up 执行事实
TPdfContentMarkSnapshots调用方持有的不可变内容标记快照的动态数组
TPdfPageObjectSnapshots调用方持有的不可变页面对象快照的动态数组
BuildPdfImpositionPlan在不打开或修改文档的情况下构建并校验 N-up 或小册子槽位计划

记录类型

类型字段
TBookmarkHandle, Title, PageNumber, Destination, DescendantCount, IsOpen, Action, ActionPageNumber, ActionDestination, ActionPath, HasColor, Color, Style
TDestinationHandle, Name, PageNumber, ViewMode, ViewParameterCount, ViewParameters, HasX, X, HasY, Y, HasZoom, Zoom
TPdfDocumentMetadataTitle, Author, Subject, Keywords, Creator, Producer, CreationDate, ModifiedDate
TPdfBatchMergeSourceFileName, PageRange, Password 以及 FromFile 构造器
TPdfBatchMergeOptionsErrorPolicy, FormPolicy, OutlinePolicy, ResourcePolicy, PageChunkSize, InsertAt, CreateDestination, CopyViewerPreferences, RollbackOnCancelOrFailure, CancellationToken, OnProgress 以及 Default
TPdfBatchMergeReport终止状态、源与页面计数器、原生导入指标、同时打开源峰值、策略检测结果、目标与查看器偏好状态、错误文本和问题列表
TLinkAnnotationHandle, Rectangle, PageNumber, Action, ActionPageNumber, ActionPath, Points
TWebLinkUrl: WString, Rectangles: TPdfRectangles
TPdfImageWidth: Integer, Height: Integer, Data: TBytes
TPdfSignatureContent: TBytes, Encoding: WString, Reason: WString, Time: WString, Permission: Integer
TPdfFormSelectionRectPageNumber: Integer, Bounds: TPdfRectangle
TPdfStructureElement层次结构、文本替代、MCID、表格/列表属性、命名空间与命名空间角色映射、引用、关联文件、批注描述、控件归属、标签和外观事实
TPdfStructureReadOptions迭代结构遍历的最大深度、元素、属性值、截止期限和属性纳入控制
TPdfStructureReadStatus已访问计数,以及完成、深度、元素、属性、截止期限和访问者中止等结束状态
TPdfUaNamespaceKindpunkMissing, punkPdf17, punkPdf20, punkMathMl, punkAria, punkDpub, punkCustom

导航与权限类型

类型取值
TPdfDestinationViewModedvmUnknown, dvmXYZ, dvmFit, dvmFitHorizontal, dvmFitVertical, dvmFitRectangle, dvmFitBoundingBox, dvmFitBoundingBoxHorizontal, dvmFitBoundingBoxVertical
TPdfPermissionpermPrint, permModify, permCopy, permAnnotate, permFillForms, permAccessibility, permAssemble, permPrintHighQuality
TPdfPermissionsTPdfPermission 值的集合

文档加载、保存与流类型

类型取值
TPdfLoadModeplmCompatible, plmStrict, plmRecovery —— 选择加载允许执行多大程度的修复
TPdfLoadStatusplsNotAttempted, plsLoaded, plsLoadedWithRecovery, plsRejected, plsFailed
TPdfLoadRecoveryRouteplrrNone, plrrNativeCrossReference, plrrNativeCrossReferenceRebuild
TPdfContentNormalizeStatuspcnsNotStarted, pcnsCompleted,以及有界失败原因 pcnsInputLimitExceeded, pcnsOutputLimitExceeded, pcnsTokenLimitExceeded, pcnsMalformedToken, pcnsUnresolvedInlineImage, pcnsUnbalancedState, pcnsUnsupportedFilter, pcnsEncryptedDocument, pcnsSignedDocument, pcnsDocumentRewriteFailed
TPdfObjectPatchOperationKindpopSet, popRemove —— SaveAsObjectGraphPatched 使用的操作种类
TPdfObjectPatchValue记录:Kind, BooleanValue, IntegerValue, RealValue, TextValue, ReferenceObjectNumber, ReferenceGeneration
TPdfOptionalContentStateocsUnspecified, ocsOn, ocsOff
TPdfStreamDecodeLevelpsdlRaw, psdlGeneral, psdlFull
TPdfStreamNativeAccesspsnaNone, psnaImageObject, psnaEmbeddedFile
TPdfStreamReadStatuspsrsCompleted, psrsPartiallyDecoded,以及 psrsInvalidIndex, psrsSourceLimitExceeded, psrsExpansionRatioExceeded, psrsUnsupportedFilter, psrsEncrypted, psrsMalformed 等有界读取拒绝项
TPdfAFRelationshipafSource, afData, afAlternative, afSupplement, afUnspecified, afEncryptedPayload, afFormData, afTemplate —— ISO 32000-2 7.11.4 的关联文件关系
TDpmTargetdptRoot, dptLeaf —— PDF/VT 文档部件元数据的附加位置
TPdfXmpNamespace记录:Prefix, Uri —— TPdfXmpPacket 的一个命名空间
TPdfAMetadataValues记录,包含 PDFium 解码的映射 Info 值和显式的键存在集合
TPdfAMetadataComparison记录,包含一个映射字段、其等价状态和双方被比较的值
TPdfAMetadataReport记录,包含 XMP 可用性、解析状态、逐字段比较、不匹配字段和 IsEquivalent
TPdfLoadIssue记录:Code, Severity, Offset, ObjectNumber, RevisionIndex, MessageText —— 有界交叉引用审计的一条发现
TPdfLoadIssueCode审计发现代码,从 plicHeaderMissing 与 plicStartXrefInvalid 到 plicXrefEntryConflict, plicNativeCrossReferenceRebuild, plicStrictModeRejected 和 plicRepairVerificationFailure
TPdfLoadIssueSeverityplisInformation, plisWarning, plisError
TPdfObjectPatchValueKindpovNull, povBoolean, povInteger, povReal, povName, povTextString, povReference
TPdfStreamFilterInfo记录:过滤器 Name 与 Kind,以及解码参数 Predictor, Colors, BitsPerComponent, Columns, EarlyChange
TPdfOptionalContentGroup描述一个 OCG 的记录:对象编号与生成号、Name、Intents、查看/打印/导出状态、页面元素子类型、语言、用户类型与名称、可选缩放范围、EffectiveVisible、Locked 和单选组索引
TPdfOptionalContentConfiguration描述一个 OCG 配置的记录:名称、创建者、BaseState、意图、on / off / locked / order 组列表、单选组以及是否存在自动状态
TPdfOptionalContentMembership描述一个 OCMD 的记录:引用的组、Policy、可见性表达式和 EffectiveVisible
TPdfOptionalContentMembershipPolicyocmpAnyOn, ocmpAllOn, ocmpAnyOff, ocmpAllOff, ocmpUnknown
TPdfOptionalContentBaseStateocbsOn, ocbsOff, ocbsUnchanged
TPdfOptionalContentRadioGroup记录:作为一个单选按钮集合运作的组对象编号
TPdfOptionalContentStateChange记录:GroupObjectNumber 与要写入的 Visible 状态
TPdfXmpValue记录:Kind(pxvkText, pxvkUri, pxvkResource)、Text, Language, Qualifiers, RawXml
EPdfXmpErrorXMP 输入格式非法时引发的异常
TXfdfNameValuePair记录:Name, Value —— XFDF 文档的一个通用条目
TPdfDpmEntry记录:Name, Value, IsNestedDict —— 一个 PDF/VT 文档部件元数据条目
TPdfVT2sValidationIssuePDF/VT-2s MIME 流验证的发现项,例如 vtmviNotMultipart, vtmviMissingStreamVersion, vtmviMissingBoundary, vtmviNoInlinePdf 和 vtmviInlinePdfNotPdfVT

文本、字体与 OCR 类型

类型取值
TPdfCidFontEmbeddingModepcfemFull, pcfemSubsetPreferred, pcfemSubsetRequired
TPdfSystemFontRequest记录:FaceName, Weight, Italic, Charset, PitchFamily —— 提交给系统字体提供方的字体请求
TPdfSystemFontData记录:FaceName, FontData, Charset, TTCIndex —— 系统字体提供方返回的字体字节
TPdfShapedGlyph记录:GlyphID, Advance, OffsetX, OffsetY, ClusterStart, ClusterLength
TPdfTextShaper仅含单个 Shape 方法的抽象类;实现它即可把外部整形引擎接入 AddShapedText
TPdfTableDetectionModeptdmRuled, ptdmWhitespace
TPdfTableContinuationptcNone, ptcStart, ptcMiddle, ptcEnd —— 页面网格在表格延续链中的位置
TPdfOcrImage记录:PageNumber, Width, Height, Stride, Dpi, PixelFormat, Pixels —— 提交给 OCR 提供方的页面栅格
TPdfOcrQuad记录:TopLeft, TopRight, BottomRight, BottomLeft,附 FromRectangle
TPdfOcrPoint记录:页面单位下的 X, Y
TPdfOcrPixelFormatpopfBgra32 —— 提交给 OCR 提供方的像素布局
TPdfOcrPageStatuspopsPending, popsCompleted, popsSkippedExistingText, popsCancelled, popsFailed
TPdfOcrPageReport记录:页码、Status、图像尺寸,以及检测/插入/拒绝的单词计数和一条错误消息
TPdfShapedRun记录:源文本范围、视觉位置与宽度、BidiLevel、IsRightToLeft 以及整形后的 Glyphs
TPdfReflowNode记录:节点 Kind、父索引、深度、页面、文本、边界、语言、阅读顺序来源、标题级别、表格行/列几何、表头标志和置信度
TPdfReflowNodeKindprnkPage, prnkParagraph, prnkHeading, prnkList, prnkListItem, prnkFigure, prnkCaption, prnkTable, prnkTableRow, prnkTableCell, prnkOther
TPdfSearchHighlightRange记录:StartIndex, Count —— 一个高亮字符范围
TPdfUserSelectionRange记录:从 1 开始的 Page、该页文本中的 StartIndex 以及 Count
TPdfSelectionPoint记录:从 1 开始的 Page 与 CharIndex;页码非正或索引为 -1 表示无选区
EPdfTextShapingError文本整形失败时引发的异常

布局构建器类型

类型取值
TPdfLayoutItem布局流中的一个条目;Kind 选择文本、间隔、分隔线、图像、页面 XObject、分页、缓存节点、链接或语义节点
TPdfLayoutItemKindpliText, pliSpacer, pliRule, pliImage, pliPageXObject, pliPageBreak, pliCachedNode, pliLink, pliSemanticNode
TPdfLayoutTextStyle记录:字体名称与字号、颜色与 alpha、行高、对齐、传统保持同行、长单词断行以及段前/段后间距,带 Default 构造器
TPdfLayoutConstraints记录:保持同行、与下文保持同行、段前/段后分页、孤行寡行限制,带保留语义的 Default 构造器
TPdfLayoutPageSettings记录:页面尺寸、四边边距以及页眉和页脚高度,带 A4 与 Letter 构造器
TPdfLayoutSemanticRoleplsrArtifact, plsrParagraph, plsrHeading1 到 plsrHeading6, plsrList, plsrListItem, plsrListLabel, plsrListBody, plsrTable, plsrTableRow, plsrTableHeader, plsrTableData, plsrFigure, plsrCaption, plsrLink, plsrSection, plsrDivision
TPdfLayoutTableScopepltsNone, pltsRow, pltsColumn, pltsBoth
TPdfLayoutListNumberingplnNone, plnDisc, plnCircle, plnSquare, plnDecimal, plnUpperRoman, plnLowerRoman, plnUpperAlpha, plnLowerAlpha
TPdfLayoutAlignmentplaLeft, plaCenter, plaRight
TPdfLayoutCommandKindplcText, plcRule, plcImage, plcPageXObject, plcCachedNode, plcLink
TPdfLayoutCommand记录:一条已解析的绘制命令,含种类、页码、边界、文本与字体、颜色与 alpha、对齐、粗细、文件名或 URI、来源、语义元素索引、标记内容 id 和批注索引
TPdfLayoutRect记录:布局单位下的 Left, Top, Width, Height
TPdfLayoutSemanticElement记录:一个结构元素的 Semantics 及其 ParentElementIndex
EPdfLayoutError布局输入非法时引发的异常

PAdES 类型

类型取值
TPadesSeedValueConstraintpsvcFilter, psvcSubFilter, psvcVersion, psvcReasons, psvcLegalAttestation, psvcAddRevocationInfo, psvcDigestMethod
TPadesSeedValueConstraints由 TPadesSeedValueConstraint 表示的必需签名 seed value 条目的集合
TPadesSignatureFieldOptions记录:字段名称、必需 seed value、允许的原因与法律声明、可接受的证书、证书要求、FieldMDP 锁定动作与字段名称,以及 DocMDP 认证权限
TPadesLevelplUnknown, plNone, plB_B, plB_T, plB_LT, plB_LTA —— EN 319 142-1 合规级别
TPadesCryptoStatuspcsNotChecked, pcsValid, pcsInvalid, pcsUnsupported, pcsIndeterminate
TPadesValidationSourceStatuspvssUnavailable, pvssOriginalBytes, pvssIncomplete
TPadesTrustNetworkPolicyptnpOffline, ptnpOnline
TPadesTrustValidationAsyncStatusptvasSuccess, ptvasCancelled, ptvasFailure —— ValidatePadesTrustAsync 报告的结果
TPadesRevisionDecisionprdAllowed, prdDisallowed, prdSuspicious, prdIndeterminate
TPadesFieldMdpActionpfmaNone, pfmaAll, pfmaInclude, pfmaExclude, pfmaUnknown
TWinCmsVerifyStatuswcvsUnavailable, wcvsValid, wcvsInvalid, wcvsUnsupported, wcvsIndeterminate —— Windows CMS 验证结果
TPdfMacValidationStatuspmvsValid, pmvsNotPresent, pmvsInvalid, pmvsUnsupported
TPadesSignatureValidation记录:逐签名的字节范围、CMS 签名、算法策略、签名证书、链信任、吊销及对应时间戳项的状态,外加原生错误代码和算法信息
TPadesValidationIssue针对 EN 319 142-1 与 ISO 32000-1 12.8 提出的发现项,包括重复的必需键、非法的 Filter 或 Type 值、精确的 Contents 排除范围,以及证书、吊销和时间戳要求
TPadesTrustValidationStageptvsStarting, ptvsReadingSource, ptvsParsingSignatures, ptvsCryptographicIntegrity, ptvsCertificateChain, ptvsAiaRetrieval, ptvsOcspRetrieval, ptvsCrlRetrieval, ptvsTimestampToken, ptvsCompleted
TPadesTrustValidationProgress记录:当前 Stage、签名索引与数量以及完成百分比
TPadesRevisionRisk按修订报告的风险,例如 prrMalformedRevisionChain, prrSignatureObjectRedefined, prrPageContentChanged, prrActiveContentAdded 和 prrResourceLimitExceeded
TPadesDssMaterial记录:加入文档安全存储的一个证书、CRL 或 OCSP 响应的 DerBytes
TWinCmsVerifyOptions记录:OnlineRetrieval, CheckRevocation, UrlRetrievalTimeoutMs 和 OnCheckpoint 回调,带 Default 构造器
TWinCmsVerifyStagewcvstCryptographicSignature, wcvstChainBuild, wcvstOnlineRetrieval, wcvstRevocationCheck

批处理、验证与表单类型

类型取值
TPdfBatchMergeErrorPolicybmepStop, bmepSkip
TPdfBatchMergeFormPolicybmfpPreserveNative, bmfpFlatten, bmfpReject
TPdfBatchMergeOutlinePolicybmopDiscard, bmopReject
TPdfBatchMergeResourcePolicybmrpSourceScoped, bmrpChunked
TPdfBatchMergeStatusbmrsCompleted, bmrsCompletedWithErrors, bmrsCancelled, bmrsFailed
TPdfPagePlanOperationppoDelete, ppoMove, ppoInsert
TPdfPagePlanDecisionppdAllow, ppdReview, ppdReject
TPdfValidationPredicateKindpvpkIssueAbsent, pvpkStandardPass, pvpkCustom
TPdfValidationRun记录:规则结果及通过/失败/跳过/错误计数、访问的对象、证据字节、预留内存峰值、耗时毫秒数以及 IsComplete / IsCompliant
TPdfBatchValidationStatuspbvsComplete, pbvsPartial, pbvsCancelled, pbvsFailed
TPdfInkGesture记录:描述一笔墨迹笔画的 Points 数组
TPdfFormFillInfo压缩记录,把 PDFium FPDF_FORMFILLINFO 回调块与其所属 TPdf 配对;由表单填写桥在内部使用
TPdfBatchMergeIssue记录:失败或被跳过的某个源的 SourceIndex, FileName, MessageText
TPdfBatchMergeProgress记录:Stage、源索引与数量、文件名以及已导入的源/页面/原生调用计数
TPdfBatchMergeProgressStagebmpsStarted, bmpsOpeningSource, bmpsImportingPages, bmpsSourceCompleted, bmpsSourceFailed, bmpsRollingBack, bmpsCompleted, bmpsCancelled, bmpsFailed
TPdfBatchValidationItem记录:文件名、Status、预检报告、验证运行、错误消息和耗时毫秒数
TPdfBatchValidationItemStatuspbvisPending, pbvisPass, pbvisFail, pbvisCancelled, pbvisError
TPdfValidationRuleResult记录:规则 id、配置档、条款、类别、严重性、Status、证据、修复提示和耗时毫秒数
TPdfValidationRuleStatuspvrrsPass, pvrrsFail, pvrrsSkipped, pvrrsError
TPdfValidationRunStatuspvrsComplete, pvrsFastFailed, pvrsBudgetExceeded, pvrsCancelled, pvrsError
TPdfARepairStep记录:有序修复动作,含类别、问题代码、证据、依赖、Safety,以及完全重写、签名失效和受阻状态标志
TPdfARepairCategoryparcSecurity, parcFonts, parcColour, parcAttachments, parcStructure, parcMetadata, parcOther
TPdfARepairSafetyparsAutomatic, parsReviewRequired, parsManual
TPdfXProductionIssue记录:问题 Kind、严重性、页码、对象索引以及来自 PDF/X 生产检查的证据
TPdfXProductionIssueKindpxpikOutputIntent, pxpikPageBox, pxpikFont, pxpikColourant, pxpikTransparency, pxpikOverprint, pxpikSeparation, pxpikImageResolution
TPdfXProductionPage记录:逐页面的框存在性、对象计数、透明度标志和最小有效 DPI
TPdfRPageFacts记录:PDF/R 页面事实 —— 媒体与图像几何、对象计数、像素尺寸、分辨率、位深、颜色空间和过滤器
TPdfPagePlanImpactppiBookmarks, ppiNamedDestinations, ppiPageLabels, ppiFormFields, ppiStructureTree, ppiSignatures, ppiImportedFeaturesUnknown

并行渲染与打印输出类型

类型取值
TPdfParallelRenderOptions记录:DPI、工作线程、逐页面像素与总输出预算、旋转、原生渲染选项和背景颜色
TPdfBandedImageFormatpbifCustom, pbifPng, pbifTiff
TPdfBandedImageStreamOptions记录:格式、条带高度、PNG 压缩级别和最大编码输出字节;用 Default 初始化
TPdfBandedImageReport记录:格式、尺寸、已渲染与已编码条带计数、已编码行数、条带字节峰值、输出字节和完成状态
TPdfBandedImageEncoder抽象的调用方编解码器契约,含 BeginImage、顺序 WriteBand、EndImage 和可选字节遥测
TPdfParallelModuleIdentity记录:专用模块 FileName、原生 InitializationAddress 和句柄释放结果 Unloaded;平台可能继续保留映射
TPdfParallelModuleIdentities渲染操作中各隔离 worker 所保留的 TPdfParallelModuleIdentity 记录数组
TPdfParallelRenderReport记录:有序结果、worker 与状态计数、保留的输出字节、耗时、源大小、源内存峰值、存储后端、共享 backing 类型,以及 Modules 身份诊断
TPdfParallelPageResult记录:页码、像素尺寸与 Stride、PixelFormat、自顶向下的 Pixels、Status、错误消息和耗时毫秒数
TPdfParallelPixelFormatpppfBgra, pppfRgba
TPdfParallelRenderStatuspprsPending, pprsSucceeded, pprsCancelled, pprsFailed
TPdfParallelSourceBackingKindppsbNone, ppsbSharedMemory, ppsbMemoryMappedFile, ppsbRandomAccessStore
TPdfSpotPlateInfo记录:SpotPlates 报告的从 0 开始的 Index 与分色 Name

FPdfAsync 辅助单元

类型说明
IPdfCancellationToken只读取消令牌,提供 IsCancelled、ThrowIfCancelled 和 RegisterCallback
IPdfCancellationTokenSource所有者侧取消源,暴露 Token 与 Cancel
TPdfCancellationTokenSource默认实现;使用 TPdfCancellationTokenSource.New
EPdfOperationCancelled取消后由 ThrowIfCancelled 引发的异常
TPdfFutureStatuspfsSuccess, pfsCancelled, pfsFailure
TPdfFutureResult<T>结果信封,含 Value、Status、ErrorMessage 以及 IsSuccess / IsCancelled / IsFailure 辅助成员
TPdfFuture<T>.Run即发即忘的后台工作辅助方法,把回复排队送回主线程
PdfNoCancellationToken从不取消的共享令牌

FPdfMeasure 辅助单元

成员说明
TPdf.MeasureText按所选字体与字号返回 PDF 用户单位下的文本宽度和高度
TPdf.MeasureTextWidth仅返回 PDF 用户单位下的文本宽度
TPdf.WrapText保留显式换行,并可在 Unicode 标量边界处拆分超长单词

FPdfMatrix 辅助单元

成员说明
TPdfMatrix.Create创建单位矩阵、显式六值矩阵,或从 FS_MATRIX 复制
NewTranslation / NewScale / NewRotation / NewSkew无需单独的变更步骤即可创建常见变换
NewRectMapping / TryCreateRectMapping在归一化矩形之间创建拉伸、包含或覆盖映射
Reset重置为单位矩阵
SetElements / Assign / Clone替换、复制或独立克隆矩阵状态
Determinant / IsFinite / IsIdentity / IsInvertible在不改变矩阵的情况下检查数值有效性与可逆性
IsTranslationOnly / IsAxisAligned / NearlyEquals分类变换形态,并按容差比较数值
GetTranslation / SetTranslation / ClearTranslation独立于线性分量读取或更新平移
TryDecompose提取平移、带符号缩放、顺时针旋转、剪切、行列式和镜像状态
Multiply与另一个 TPdfMatrix 或六个 FS_MATRIX 值做后乘
PreMultiply / PreTranslate / PreScale / PreRotate / PreSkew在当前变换前前置局部输入空间操作
Translate / Scale / Rotate / Skew组合常见 PDF 空间变换
HorizontalFlip / VerticalFlip / CentralFlip组合沿坐标轴的翻转
RotateAt / ScaleAt / SkewAt / *FlipAt围绕保持固定的支点追加操作
MapRectToRect追加拉伸、包含或覆盖的矩形映射
Invert / TryInvert / TryGetInverse / InverseCopy以可变方式求逆,或获取不改变自身的逆矩阵并显式处理奇异矩阵
TransformPoint / TransformVector / InverseTransformPoint无需临时矩阵对象即可映射位置、方向向量或逆位置
TransformQuad / TransformRect通过变换映射 PDF 四边形或归一化矩形边界
TransformPoints / TransformRects以一次结果分配映射动态数组,或使用无需输出分配的就地变体
TryTransformBounds / TransformBounds单趟累积变换后的点边界,不引入中间数组
a, b, c, d, e, f只读的矩阵元素属性
Handle供 PDFium API 使用的原始 FS_MATRIX 值

PDFium 辅助类

类说明
TPdfCacheGovernor / TPdfCacheParticipant通过一个线程安全的全局 LRU 字节预算协调保留内存
TPdfStreamAdapter把可定位的 Pascal TStream 包装为 FPDF_FILEACCESS,用于自定义文档加载
TPdfXObject持有从另一个 PDF 页面创建的可复用 FPDF_XOBJECT
TTileKey / TPdfTileCache按修订版本为渲染瓦片建立键,并维护有界的 LRU 位图缓存
Supporting declarations公共别名、回调记录、安全限制、高亮常量和可选打印输出 ABI 声明

全局函数

函数说明
BuildToUnicodeCMap(const Glyphs: array of Word; const Text: WString): AnsiString为 CID Type 2 文本构建可复用的 ToUnicode CMap
NormalizePageViewRect(...): Boolean把两个页面空间角点排序并裁剪到可见页面边界
AttachmentDescriptionFeaturesAvailable: Boolean报告附件描述导出功能是否可用
AttachmentRelationshipFeaturesAvailable: Boolean报告已加载 DLL 是否导出 /AFRelationship 读取器
BezierControlPointFeaturesAvailable: Boolean报告已加载 DLL 是否暴露精确的原生三次 Bézier 控制点回读
BookmarkStyleFeaturesAvailable: Boolean报告已加载 DLL 是否导出书签文本样式读取器
StrokePatternRenderingFeaturesAvailable: Boolean报告已加载 DLL 能否光栅化路径对象描边所用的平铺图案
ReadPdfVersionInfo(Source: TStream; out Info: TPdfVersionInfo; out ErrorText: string): Boolean读取头部、目录覆盖、实际核心版本和 Adobe 开发者扩展级别,不把它们折叠为单一值
AppendPdfSparseUpdate(Source, Dest: TStream; const Revision: TPdfSparseRevisionInfo; const Objects: TPdfSparseUpdateObjects; const TrailerExtra: AnsiString; const BeforeStartXref: AnsiString = ''): Boolean把一个稀疏修订流式写入已保存的 PDF:源字节原样保留、调用方提供的对象体,以及通过 /Prev 链接的单一增量 xref/trailer 块
Loaded: Boolean所选 PDFium 库已加载时返回 True
LoadLibrary手动加载 PDFium 库
UnloadLibrary卸载 PDFium 库
ConfigureSystemFontCacheGovernor(Governor: TPdfCacheGovernor)把进程级的系统字体结果缓存置于调用方持有的共享字节预算之下
ConfigureSystemFontProvider(const Provider: IPdfSystemFontProvider; const Policy: TPdfSystemFontPolicy)在 PDFium 加载前安装应用程序控制的原生系统字体映射器
ClearSystemFontProvider在 PDFium 卸载后移除已配置的映射器
GetSystemFontProviderStatistics: TPdfSystemFontStatistics返回映射、缓存、回退、回调与活动句柄计数
DecodeDate(const Value: string; out DateTime: TDateTime; out DateTimeOffset: Integer): Boolean把 PDF 日期字符串解析为 TDateTime 和 UTC 偏移
SetPdfPrintMode(PrintMode: TPdfPrintMode): Boolean为后续打印渲染选择 PDFium Windows 打印输出模式
SetPdfPrintPaperHandlingDevMode(var DevMode: TDeviceMode; PrintPaperHandling: TPrintPaperHandling): Boolean把 PDF 查看器偏好的双面打印提示映射到 Windows DEVMODE.dmDuplex
V8FeaturesAvailable: Boolean已加载 DLL 暴露 PDFium V8 辅助导出时返回 True
XfaBStrHelpersAvailable: Boolean已加载 DLL 暴露 XFA FPDF_BSTR 辅助导出时返回 True
XfaFeaturesAvailable: Boolean已加载 PDFium 构建暴露 XFA 特性导出时返回 True
GetRecommendedV8Flags: string返回 PDFium 推荐的 V8 命令行标志,已加载 DLL 未暴露时返回空字符串
PdfBufferLooksXfa(Data: PByte; Size: Integer): Boolean扫描原始 PDF 字节缓冲区中的 XFA 标记,不加载 pdfium.dll
PdfFileLooksXfa(const FileName: string): Boolean扫描磁盘上 PDF 文件中的 XFA 标记,不加载 pdfium.dll
ValidatePdfUaStructureElements(const Elements: TPdfStructureElements; Conformance: TPdfUaConformance = puc1): TPdfUaValidationIssues按 PDF/UA-1 或 PDF/UA-2 标题语义校验展平的结构数据,不加载 pdfium.dll
IsPdfUaLanguageTagValid, ResolvePdfUaEffectiveLanguage校验语言标签,并按标记内容、最近结构祖先再到目录语言的优先级解析有效语言
ClassifyPdfUaNamespace(const NamespaceUri: WString): TPdfUaNamespaceKind对缺失、PDF 1.7、PDF 2.0、MathML 和自定义结构命名空间进行分类
ValidatePdfUa2StructureElements(const Elements: TPdfStructureElements): TPdfUaValidationIssues运行全部感知命名空间的 PDF/UA-2 语义结构规则
PdfUa2StructureHasIssue(const Elements: TPdfStructureElements; Issue: TPdfUaValidationIssue): Boolean对 C++Builder 安全的单问题查询,避免按值返回 Pascal 集合
ValidatePdfUa2NamespaceSemantics, ValidatePdfUa2Containment, ValidatePdfUa2TableGrid运行聚焦的命名空间、父子关系和有界表格网格校验
ValidatePdfUa2AnnotationSemantics, ValidatePdfUa2FormulaSemantics, ValidatePdfUa2AssociatedFileSemantics, ValidatePdfUa2DocumentSemantics运行聚焦的批注/表单、Formula/MathML、关联文件归属与阅读顺序以及文档/列表/TOC/标题校验
ValidatePdfUaPageContentTagging(const Objects: TPdfPageContentMarkInfos; const Elements: TPdfStructureElements): TPdfUaValidationIssues校验真实内容标记,并防止结构树认领 Artifact 对象
ValidatePdfUaRoleMapUsage(const Elements: TPdfStructureElements; const RoleMapKeys, RoleMapVals: TPdfUaNameArray): TPdfUaValidationIssues校验 RoleMap 键值对能否解析到标准 ISO 32000-1 类型
ClassifyStructType(const TypeName: WString; out HeadingLevel: Integer): TPdfContentFragmentKind把结构元素类型名分类为 TPdfContentFragmentKind 和可选的标题级别
FormFieldTabOrderForPage(FormHandle: FPDF_FORMHANDLE; Page: FPDF_PAGE): TPdfIntegerArray按表单 Tab 顺序返回页面控件批注索引
FocusedFormFieldTextForPage(FormHandle: FPDF_FORMHANDLE; Page: FPDF_PAGE): WString返回给定表单句柄和页面的焦点控件文本
NormalizePageViewRect(X1, Y1, X2, Y2, PageWidth, PageHeight: Double; out Left, Top, Right, Bottom: Double): Boolean把两个映射后的页面空间角点规范化为按页面钳制的可见矩形;页面完全不可见时返回 False
NextFormFieldIndexForPage(FormHandle: FPDF_FORMHANDLE; Page: FPDF_PAGE; CurrentIndex: Integer; GoForward: Boolean): Integer按页面 Tab 顺序查找下一个或上一个控件批注索引
ClearFocusedFormField(FormHandle: FPDF_FORMHANDLE): Boolean清除 PDFium 表单句柄当前的焦点表单控件
ComputeSpreadPages(DisplayMode: TPdfDisplayMode; PageNumber, PageCount: Integer; out LeftPageNo, RightPageNo: Integer)为双页显示模式计算左右页码
BuildReadingUnits(const Fragments: TPdfContentFragments): TPdfReadingUnits把可读内容片段转换为句级朗读单元
NextReadingUnitOfKind(const Units: TPdfReadingUnits; CurrentIndex: Integer; Kind: TPdfContentFragmentKind; GoForward: Boolean): Integer查找下一个或上一个请求语义种类的朗读单元
BuildWordBoxes(const PageText: WString): TPdfWordBoxes把页面文本切分为 TPdfWordBox 记录
WordBoxIndexAtCharIndex(const Words: TPdfWordBoxes; CharIndex: Integer): Integer把页面字符索引映射到单词框索引
SpokenTextAppend(var Spoken: TPdfSpokenText; const SpokenPart: WString; Page, StartIndex: Integer; SourceCount: Integer = -1)把一段已映射的朗读文本运行追加到语音文本块
BuildSpokenTextFromWords(const Words: TPdfWordBoxes; FirstWord, LastWord: Integer): TPdfSpokenText从单词框范围构建语音文本块
SpokenToPageChar(const Spoken: TPdfSpokenText; SpokenOffset: Integer; out Page, CharIndex: Integer): Boolean把朗读文本偏移换算回页面字符索引
EstimateSpokenWordIndex(const Words: TPdfWordBoxes; ElapsedMs: Cardinal; WordsPerMinute: Integer): Integer为不报告单词位置信号的引擎估算当前单词索引
FPDF_RenderPageSkia把页面内容渲染到外部 SkCanvas 的底层 PDFium 绑定
FPDF_FFLDrawSkia把表单字段和弹出批注绘制到外部 SkCanvas 的底层 PDFium 绑定
PointsToInches(Points: Double): Double把 PDF 点转换为英寸
PointsToPixels(Points, PixelsPerInch: Double): Double把 PDF 点转换为像素
PixelsToInches(Pixels, PixelsPerInch: Double): Double把像素转换为英寸
PixelsToPoints(Pixels, PixelsPerInch: Double): Double把像素转换为 PDF 点
GetApplicationPath: string返回作为 PDFium DLL 首选搜索根目录的可执行文件目录
IsWin64: Boolean当前进程面向 Win64 时返回 True
BuildDllName(UseV8: Boolean): string按请求的 V8 模式返回 pdfium.dll 或 pdfium.v8.dll
FindDllInPath(const DllName, SearchPath: string): string在单个目录中查找指定名称的 PDFium DLL
FindDllInDllsTree(const DllName, StartPath, SubDir: string): string在起始路径下搜索 DLLs\Win32 或 DLLs\Win64 文件夹
LoadPDFiumDll: string两种引擎模式下都遵循 LibraryName 显式路径,否则按组件搜索策略解析运行时
ConfigurePdfLibrary(const Configuration: TPdfLibraryConfiguration)在首次加载库之前应用 DLL 选择、V8 和沙箱配置
GetPdfLibraryConfiguration: TPdfLibraryConfiguration返回当前生效库配置的副本
PdfLibraryConfigurationSealed: Boolean库加载完成且配置不再可变后返回 True
PdfNativeRendererType(Preference: TPdfRendererPreference; SkiaBuild: Boolean): FPDF_RENDERER_TYPE返回某个偏好在仅 AGG 或启用 Skia 的 PDFium 构建上选中的原生渲染器,prpDefault 时保持构建默认
PdfLibraryConfigurationSupportError(const Configuration: TPdfLibraryConfiguration; SkiaBuild, FontationsBuild: Boolean): string返回渲染器或字体后端无法用于某个 PDFium 构建的原因;LoadLibrary 应用同一检查并抛出 EPdfError,而不是任由原生初始化终止进程
PdfDefaultTtfMapCount: NativeUInt返回原生默认 TrueType 字体替换映射的条目数量
TryGetPdfDefaultTtfMapEntry(Index: NativeUInt; out Entry: TPdfDefaultTtfMapEntry): Boolean按索引复制一条默认字体替换映射条目
IsXfaFormField(FieldType: Integer): Boolean (FPdfXfa)测试表单字段类型代码是否属于 XFA 字段范围

全局变量

变量类型默认值说明
LibraryNamestring'pdfium.dll'显式路径在两种引擎模式下都选定该运行时;纯名称在 EnableV8Engine 为 False 时选定标准运行时
EnableV8EngineBooleanFalse加载前设为 True,以从匹配的 Win32 或 Win64 DLLs 文件夹选择 pdfium.v8.dll

常见用法模式

PDF 查看器实现

procedure TMainForm.OpenPDF(const FileName: string);
begin
  Pdf.FileName := FileName;
  Pdf.Active := True;
  PdfView.Pdf := Pdf;
  PdfView.Active := True;
  StatusBar1.SimpleText := Format('Loaded: %s (%d pages)',
    [ExtractFileName(FileName), Pdf.PageCount]);
end;

创建带压缩的 PDF

Pdf.CreateDocument;
Pdf.Compressed := True;
Pdf.Active := True;
Pdf.AddPage(0, 595, 842);
Pdf.AddText('Hello World!', 'Arial', 24, 100, 700, clBlack, $FF, 0.0);
Pdf.SaveAs('output.pdf');
Pdf.Active := False;

文本提取

Pdf.FileName := 'document.pdf';
Pdf.Active := True;
for I := 1 to Pdf.PageCount do
begin
  Pdf.PageNumber := I;
  Memo1.Lines.Add(Format('--- Page %d ---', [I]));
  Memo1.Lines.Add(Pdf.Text);
end;
Pdf.Active := False;

表单字段处理

Pdf.FileName := 'form.pdf';
Pdf.Active := True;
Pdf.PageNumber := 1;
for I := 0 to Pdf.FormFieldCount - 1 do
begin
  FieldInfo := Pdf.FormFieldInfo[I];
  case FieldInfo.FieldType of
    fiTextField:
      Pdf.FormField[I] := 'New Value';
    fiCheckBox:
      Pdf.FormField[I] := 'Yes';
  end;
end;
Pdf.SaveAs('filled_form.pdf');
Pdf.Active := False;

扁平化已填写的表单

// Bake form values into permanent (non-editable) page content
Pdf.FileName := 'form.pdf';
Pdf.Active := True;
Pdf.FormField[0] := 'John Smith';
Pdf.FormField[1] := 'Yes';
Pdf.GenerateFormAppearances;          // step 1: refresh /AP from /V
Pdf.FlattenAllPages(FLAT_NORMALDISPLAY); // step 2: flatten all pages
Pdf.SaveAs('flattened.pdf');           // step 3: save
Pdf.Active := False;