PDFium Delphi Component 概览
| 产品 | PDFium Delphi Component —— 面向 Delphi、C++Builder 和 Lazarus 的专业源码级 PDF 应用开发 SDK |
|---|---|
| 适用场景 | 在原生应用中交付高性能 PDF 阅读器、审阅工具、文档工作流和无障碍阅读体验 |
| IDE 支持 | Delphi 与 C++Builder XE5 至 13.1 Florence(Win32、Win64);Lazarus / Free Pascal LCL |
| 引擎职责 | PDFium —— Chromium PDF 显示背后的开源引擎家族 —— 负责页面渲染与文档读取;V8 / XFA 运行库为可选项 |
| 应用层 | 55 个单元、115,000 行 Object Pascal,TPdf 有 475 个 public 成员,TPdfView 有 152 个,涵盖 PDFium 未提供的查看器、序列化、签名、加密、标准与无障碍各层 |
| 数字签名 | PAdES B-B / B-T / B-LT / B-LTA 签名(ETSI EN 319 142-1)、CMS / CAdES 容器、RFC 3161 时间戳、Document Security Store |
| 加密 | PDF 2.0 AES-256 写入支持(ISO 32000-2)、ISO/TS 32003 AES-GCM、ISO/TS 32004 PDF MAC,构建在纯 Pascal 的 AES / SHA / HMAC / ASN.1 栈之上 |
| 标准 | PDF/A(第 1-4 部分)、PDF/X(至 X-6)、PDF/UA、PDF/E、PDF/VT(至 VT-2s)、PDF/R 校验器,并配有保存与标记注入辅助方法 |
| PDF 输出 | 自建序列化器:线性化 Fast Web View、对象流与交叉引用流打包、仅写脏对象的增量修订、经校验的修复副本 |
| 阅读器资源 | 34 个可直接运行的项目:专业阅读器参考实现、交互实验、无障碍工作台、标准与印前检查工具、CJK 与 RTL 文本实验 |
| 大文件 | 按需访问,多 GB 文档无需预先整体载入内存;支持并行页面渲染与有上限的工作存储 |
| 源代码 | 每个授权都包含完整的 Object Pascal 源代码 |
| 许可 | 免版税、一次性付费,按档位 $350-$4200;续费为标价的 40% |
| 当前版本 | 3.51.0 (2026-08-16) |
| 评估版 | 免费评估包下载 |
引擎的边界与产品的起点
PDFium 是一个渲染器。它绘制页面、提取文本、读取已有结构 —— 全部职责到此为止。它没有签名能力,不能写入加密,没有标准验证器,没有线性化器,没有增量修订写入器,也不支持 XFDF 或 XMP。对 PDFium C API 的封装,会原样继承这些限制。
PDFium Delphi Component 提供约 115,000 行 Object Pascal 代码,分布在 55 个单元中。其中超过 62,000 行位于 36 个在 PDFium API 里完全没有对应实现的单元中 —— 密码学、签名、加密、六套标准验证器、PDF 序列化器、XFDF、XMP、排版和文本整形。全部用 Pascal 编写,对照已发布的 ISO、ETSI、IETF 和 FIPS 条款逐条校验,并随每一份许可以源码形式交付。
| 能力 | PDFium 引擎 | 由 PDFium Delphi Component 实现 |
|---|---|---|
| 数字签名 | 仅能读取已有的签名字典 | PAdES B-B / B-T / B-LT / B-LTA 签名、符合 RFC 5652 的 CMS / CAdES SignedData、RFC 3161 时间戳客户端、DSS 与 VRI 注入、Windows CNG 密钥(RSA-PSS、PKCS#1、ECDSA)、私钥始终不离开服务端的远程 / HSM 签名,以及证书链信任验证 |
| 加密 | 可以打开加密文件,但无法写入加密 | ISO 32000-2 AES-256(V5 / R6 算法 2.B 密钥派生)、ISO/TS 32003 AES-GCM、ISO/TS 32004 PDF MAC,以及对全部 stream 和字符串的完整加密遍历 |
| 密码学原语 | 没有对外暴露任何原语 | 纯 Object Pascal 实现的 AES-128/256 CBC 与 GCM、SHA-256/384/512、SHA-3、HMAC,以及 ASN.1 DER 读写器,并已通过 FIPS 197 和 FIPS 180-4 测试向量校验 |
| 标准符合性 | 没有任何形式的验证器 | PDF/A 第 1-4 部分、PDF/X 至 X-6、PDF/UA-1、PDF/E-1、PDF/VT-1/2/2s、PDF/R-1 —— 条款级验证器、标记注入,以及配置文件感知的保存 helper |
| PDF 序列化 | 只有一次顺序写出的整文件保存 | 带 Annex F 提示表的线性化 Fast Web View、object stream 与 xref stream 打包、逐字节保留前一版输出的脏对象增量修订,以及经严格校验的修复副本 |
| 损坏文档 | 静默恢复,不产出报告 | strict、compatible 和 recovery 三种加载策略,并给出结构化诊断:重建路径、损坏偏移、冲突修订和预算状态 |
| 表单数据交换 | 没有 XFDF 或 FDF API | 针对字段值和 18 种批注子类型的 XFDF(ISO 19444-1)与 FDF 导入导出 |
| 元数据 | 只读取传统的 info 字典 | 带类型化容器的 XMP 数据包读写器,每一种标准配置文件都会用到 |
| 网络与规模 | 只有 byte-range 回调,再往上什么都没有 | 渐进式文档会话;带去重、合并、有限重试和取消能力的优先级 byte-range 调度器;并行页面渲染;以及会溢出到关闭即删除临时文件的受限工作存储 |
| 应用层 | C handle 与回调 | 三个注册的 VCL / LCL 组件、475 个 TPdf 公开成员和 152 个 TPdfView 成员、查看器状态、缩略图、阅读会话,以及 34 个可直接运行的工程 |
Delphi 原生 PDF 查看与文档工作流
不只是 PDFium DLL 封装
PDFium Delphi Component 在 PDFium 引擎之上提供完整的应用开发层,而不是简单翻译 C API。它提供 Delphi 原生可视与非可视组件、高层 API,以及用于查看、搜索、表单、批注、打印、无障碍和验证的可复用工作流。
PDFViewer、MultiPageViewer、SplitView、ViewerInteractionLab 和 AccessibilityReader 等参考项目展示了可研究和扩展的专业阅读器架构。按需加载、可取消的渐进渲染和辅助阅读工具,可帮助团队为真实文档构建快速且无障碍的阅读器。
PDFium Delphi Component 是面向 Delphi、C++Builder 和 Lazarus 应用的源码级 PDFium 组件集,适合需要在原生 Windows 桌面界面内实现快速 PDF 显示、页面光栅化、stream 加载、文本选择、搜索、表单、注释、打印、预检 报告和文档检查的项目。
大文件近乎秒开: 在真实大文件测试中,主流 PDF 阅读器可能需要 20-30 秒才显示首屏的 2.x GB PDF,在 PDFium Delphi Component 中可几乎立即进入可用状态。
当 PDF 体验应当内嵌在应用中,而不是交给外部查看器时,可以使用它。包内包含可视与非可视组件、Object Pascal 源码、演示工程、PDFium DLL、可选的 V8 / XFA runtime DLL、命令行 预检 示例、回归测试,以及查看器集成和底层 PDF 操作的文档。
PDFium Delphi Component 支持 Delphi XE5 到 Delphi 13.1 Florence,以及 C++Builder XE5 到 C++Builder 13.1 Florence,覆盖 Win32 和 Win64 目标。还包含面向 LCL 工作流的 Lazarus / Free Pascal 包和演示。
主要能力
- 查看器 UI: 将
TPdfView放到窗体上即可获得缩放、旋转、适配模式、单页与连续布局、封面感知双页、页面阴影、安全链接点击、用户文本选择、复制到剪贴板和表单焦点工作流。 - 缩略图导航: 在查看器旁加入
TPdfThumbnailView,提供可滚动页面缩略图、悬停反馈、选中高亮和点击跳转。 - 渲染: 将页面和切片渲染为 bitmap,在可行时使用零拷贝 DIB 写入,执行可取消的渐进渲染,通过
RenderPagesParallel并行渲染一组页面,在已加载 DLL 导出相关入口时访问底层 Skia hook,并让大页面保持响应。 - Streams 与大文件: 从磁盘、内存、byte array 或自定义 seekable stream 加载,通过按需 PDFium 读取避免对大型或远程文档进行预先内存复制。
- 大文件启动: 快速开始审阅数 GB PDF;查看器使用可 seek 的按需 PDFium 访问方式,2.x GB 文档无需等待完整预加载即可几乎立即可用。
- 文本与搜索: 提取页面文本,向前或向后搜索,高亮匹配,构建全页结果列表,并检查字符矩形、原点、角度、生成字符、字体族、字重、大小、ascent、descent 和嵌入字体状态。
- 结构化文本:
GetStructuredText依据字符几何、字体元数据、文本对象标识和 Tagged PDF 语义,构建页面、块、行和带样式 span 的层级结构;文档没有 tag 时回退到物理布局排序。 - 表格提取:
ExtractTables和ExtractDocumentTables将词框与变换后的路径分隔线结合,识别有边框和靠空白对齐的表格,保留合并单元格,给出置信度评分,标记跨页续表,并导出 CSV 或 JSON。 - 语义重排为 HTML:
BuildReflowDocument把固定版式的 PDF 转成可复用的节点树,其安全 HTML 输出保留标题、段落、列表、图片、页面分节和表格跨度 —— 适用于响应式显示、无障碍访问和内容复用。 - 表单: 处理 AcroForm 字段、XFA 状态检测、可选 V8 / XFA helper 可用性、选中文本、表单 undo / redo、生成的表单外观、字段 flags 和 flattening。
- 表单数据交换: 针对字段值和 18 种批注子类型,导入导出 XFDF(ISO 19444-1)和 FDF(ISO 32000-1 §12.7.11)—— PDFium 完全没有为这两种格式提供 API,它们由组件自有的批注与字段模型在 Pascal 中实现。
- OCR 集成: 通过
IPdfOcrProvider接入任意识别引擎:引擎按约定的像素格式接收页面 bitmap 并返回词框四点坐标,组件负责写入可搜索文本层,并提供逐页状态报告和已有文本跳过。 - 注释与链接: 创建、删除、统计和检查注释;处理页面链接、web links、书签目标、文档 JavaScript 动作、URI / Launch 风险面以及查看器点击事件。
- 文档组装: 创建文档,添加或删除页面,按标签或物理索引导入页面范围,移动页面,组合 N-up 页面,将页面复用为 Form XObjects,应用水印或印章,更新页面内容并管理页面 boxes。
- PDF 输出与修订: 保存带页面偏移和共享对象提示表的线性化 Fast Web View 文件,把对象打包进 object stream 并提供完整的 type-2 xref 覆盖,追加逐字节保留前一版输出的脏对象增量修订,并生成在交付前由一次独立严格加载重新校验过的修复副本。
- 数字签名: 按 PAdES baseline B-B、B-T、B-LT 或 B-LTA 签名;构建带有对应 profile 所需签名属性的 CMS / CAdES SignedData;向 TSA 申请 RFC 3161 时间戳令牌;把证书链收集进 Document Security Store;添加归档时间戳;并可同步或异步地对任意文档执行条款级 PAdES 检查和证书链信任验证。
- 远程与 HSM 签名: 用
PreparePadesRemoteSignature和CompletePadesRemoteSignature把签名过程一分为二 —— 应用先产出占位文档和携带 SHA-256 摘要的可移植签名请求,远程服务或硬件模块返回分离式 CMS,再由组件注入。私钥完全不必出现在工作站上。 - 加密与完整性: 写入具备正确 R6 密钥派生和权限块的 PDF 2.0 AES-256 加密,在需要时使用 ISO/TS 32003 AES-GCM,附加 ISO/TS 32004 PDF MAC 令牌;所依赖的 AES、SHA-2、SHA-3、HMAC 和 ASN.1 原语均以 Object Pascal 编写,不引入任何外部 C 依赖。
- 内容与安全检查: 提取图像,渲染对象 bitmap,检查对象边界和透明度,读取附件、元数据、签名、权限、语言、页面标签、页面模式、查看器首选项、Tagged PDF 结构和文件标识符。
- 预检 报告: 生成面向标准的审计报告,包含 pass、action-required、review、priority、issue category、category-count 和 next-action 字段;导出 TXT / HTML / Markdown / JSON / CSV,运行批量汇总,并将报告附加到审核副本。
- 打印: 支持页面范围、份数、缩放偏好、N-up 组合、奇偶页过滤、灰度输出、查看器首选项元数据,以及用于双面和纸张处理集成的
SetPdfPrintPaperHandlingDevMode。
面向合规的 PDF 工作流
PDFium Delphi Component 为需要可预测 PDF 交付、归档审查、打印工作流、可访问性检查、工程文档、可变数据输出或 光栅-locked 交付的团队提供面向标准的验证和保存 API。
| 工作流 | PDFium Delphi Component 支持 | 应用负责事项 |
|---|---|---|
| PDF/A | ValidatePdfA、SaveAsPdfA、PdfAConformance 覆盖 ISO 19005 第 1 至 4 部分 —— 含基于 PDF 2.0 的 A-4 base、A-4f 和 A-4e 配置文件 —— 提供 OutputIntent 检查、XMP 元数据检查、字体嵌入检查、RoleMap 与 ParentTree 结构检查、Annex C 实现限值、加密与 JavaScript 限制,以及配置文件感知的保存 helper。 | 选择归档目标,提供正确的文档元数据和颜色数据,并在交付前审查所有验证问题。 |
| PDF/X | ValidatePdfX、SaveAsPdfX、PdfXConformance 覆盖从 X-1a 到基于 PDF 2.0 的 X-6,提供 OutputIntent 与 ICC 处理、按配置文件限定的透明度和色彩空间限制、TrimBox / ArtBox / BleedBox 几何检查,以及打印安全配置文件检查。 | 为目标 PDF/X 配置文件提供适合生产的 output intent 数据、页面几何和打印设置。 |
| PDF/UA | ValidatePdfUa、SaveAsPdfUa、PdfUaConformance、语言与 tagging 检查、结构树检查、marked-content 审查和可访问性配置文件验证。 | 在源工作流中编写有意义的阅读顺序、标题、列表、表格语义、替代文本和文档语言。 |
| PDF/E, PDF/VT, PDF/R | ValidatePdfE、ValidatePdfVT、ValidatePdfR、对应的 SaveAs... API,以及面向工程、可变数据和光栅化 PDF 配置文件的符合性属性。PDF/VT 覆盖 DPart 层级、文档部件元数据和 VT-2s 多部分 MIME stream 打包;PDF/E 会注入内嵌的 sRGB output intent;PDF/R 强制每页仅一张条带图像,并限定允许使用的编码列表。 | 将配置文件匹配到业务工作流,并让源内容保持在所选标准允许的功能集内。 |
| PAdES 签名 | SignPades、SignPadesToStream、SignPadesBytes、SaveAsPadesDss 和 ValidatePadesCompliance 覆盖 ETSI EN 319 142-1 的 baseline 级别 B-B、B-T、B-LT 和 B-LTA,含 RFC 3161 时间戳、Document Security Store 注入、ESIC 扩展标记和 26 个条款级验证码。SignPadesWithPdfA 在一个工作流中同时完成归档转换和签名。 | 提供签名证书及其证书链,为带时间戳的级别选择 TSA 端点,并定义本机构的留存与吊销策略。 |
| 预检 自动化 | FPdfPreflightReport 和 PreflightReportCli 为 PDF/A、PDF/UA、PDF/E、PDF/X、PDF/R 和 PDF/VT 检查生成面向人和机器的摘要。 | 决定 pass、action-required、review 或问题计数是否应阻断 CI、交付或归档摄取。 |
这些 API 旨在让标准相关工作在代码中可见。验证结果、预检 摘要和保存 helper 可帮助应用拒绝或修正有问题的输出,而不是静默交付一个稍后才在归档、打印或可访问性流程中失败的文件。内置验证器聚焦 marker-level 和部分 file-level 检查;需要正式 content-level 认证的团队应将其与专用验证引擎配合使用。
组件架构
TPdf: 非可视文档组件,用于加载、stream 访问、保存、渲染、搜索、提取、验证、表单访问、页面操作、元数据、附件、注释、预检 报告和 PDF 配置文件工作流。TPdfView: 可视查看器组件,用于显示模式、用户交互、链接、滚动、缩放、选择、表单焦点、高亮、页面导航和剪贴板工作流。TPdfThumbnailView: 可滚动缩略图侧边栏,用于页面导航、当前页跟踪、悬停反馈和查看器配套布局。- 辅助单元: 共 55 个 Object Pascal 单元。除引擎绑定外,它们可分为五大类:密码学(
FPdfAes、FPdfAesGcm、FPdfSha256、FPdfSha512、FPdfSha3、FPdfHmac、FPdfAsn1)、签名(FPdfPades、FPdfCms、FPdfTsa、FPdfCryptoWin)、标准(FPdfPdfa、FPdfPdfx、FPdfPdfua、FPdfPdfe、FPdfPdfvt、FPdfPdfr、FPdfPreflightReport)、序列化与完整性(FPdfCompress、FPdfEncrypt、FPdfMac、FPdfStreamInspect、FPdfContentNormalize),以及内容服务(FPdfXfdf、FPdfXmp、FPdfLayout、FPdfMeasure、FPdfTextShaping、FPdfStructTree、FPdfAsync、FPdfMatrix)。
上述每一个单元都是你可以拿到并单步调试的源码。密码学原语用 Object Pascal 编写,并已对照 FIPS 197 和 FIPS 180-4 公布的测试向量校验,因此签名和加密不会给你的部署带来额外的 C 库,也不会给安全审查带来第三方二进制文件。
下载 PDFium Delphi Component 演示包
2026-08-16 Version 3.51.0: PDFium Delphi Component 发行说明 | API 参考。3.51.0 把此前无法访问的八个 TPdf 成员按文档所述开放为公开成员,并补全了英文 API 参考:TPdf 和 TPdfView 的每一个公开成员现在都有独立页面(本次新增 88 个),公开签名中可达的枚举和记录类型同样如此。
许可与价格
通过 2Checkout 使用信用卡/借记卡、PayPal、支付宝或电汇进行支付。 每个新的 PDFium Delphi Component 许可证均包含 Object Pascal 源代码、一年更新和一年邮件支持。
| 许可 | 开发者 | 价格 | 购买 |
|---|---|---|---|
| Single | 1 名开发者 | $350 | 购买 |
| Small Business | 最多 10 名开发者 | $700 | 购买 |
| Medium Business | 最多 30 名开发者 | $1050 | 购买 |
| Enterprise | 单一国家内同一公司及其子公司的全体开发者 | $2100 | 购买 |
| Corporate | 全球范围内同一公司及其子公司的全体开发者 | $4200 | 购买 |
Enterprise 与 Corporate 源码附加内容:PDFium Delphi Component Enterprise 和 Corporate 都包含专用工具级示例 PDF Intake & Accessibility Review Workbench Pro 的完整源码。通常仅用于内部验证的完整测试套件源码,可应要求提供。
现有客户续费:全价的 40%,可随时取消。打开 PDFium Delphi Component 购买与续费页面。
包含的演示
包内包含面向 Delphi、C++Builder 和 Lazarus 的可直接运行示例,覆盖多数团队在生产集成前需要验证的核心工作流。
- PdfViewer: 完整查看器,包含文本选择、搜索、书签、页面导航、打印、链接和显示模式。
- ViewerInteractionLab 和 SearchAndSelect: 显示模式、适配模式、页面颜色、旋转、搜索高亮、全页结果列表、选中文本预览、复制、清除和坐标映射。
- MultiPageViewer: 面向文档审阅应用的连续、双页、封面感知和多页查看器行为。
- SplitView: 同一文档的两个同步视图,用于比较和审阅工作流。
- ContentExtractionLab: 一个工作流覆盖元数据、文本、页面对象、图像、附件、链接、注释、书签、字体和字符度量,并支持 TXT / JSON 导出。
- PDFtoJpg, BatchExport 和 ImageToPDF: 光栅 导出、批量多文件转换、stream 加载、DPI / 质量控制、密码输入、进度和协作式取消。
- MergePDF, SplitPDF, CreatePDF 和 WatermarkStamp: 文档组装、程序化 PDF 创建、可复用 Form XObject 水印、角标印章和页码标签。
- FormFill, FontProperties 和 Attachment: 表单值编辑和 flattening、索引化字体和字符检查,以及嵌入文件提取或创建。
- SecurityAudit: 只读检查权限、附件、JavaScript、URI / Launch 链接、web links、签名、XFA 状态、runtime helper 可用性,以及 TXT / JSON 审计报告。
- XfdfLab 和 XfaLab: 通过 XFDF 和 FDF 往返交换表单数据与批注,并借助可选的 V8 / XFA runtime 演练 XFA 状态检测。
- CJKTextLab 和 RTLTextLab: 中文、日文、韩文、阿拉伯文和希伯来文的文本处理 —— 在这些按字符顺序做简单假设就会出错的文字上,演示提取、搜索、选区几何和整形行为。
- AnnotationsLab 和 NavigationLab: 基于四点坐标几何的标记批注创建与编辑,以及书签、目标、命名动作和页面标签的导航模式。
- AccessibilityWorkbenchCli 和 IntakeWorkbenchCli: 面向批量无障碍评估和文档摄取的无界面审查与接入流水线,适合定时任务和 CI,而非桌面窗口。
- StandardsLab, PreflightReport 和 PreflightReportCli: PDF/A、PDF/UA、PDF/E、PDF/X、PDF/R 和 PDF/VT 验证与保存工作流,报告预览,TXT / HTML / Markdown / JSON / CSV 导出,批量文件夹、排序摘要、防重名报告、报告附件和面向 CI 的
failon=退出行为。
团队选择 PDFium Delphi Component 的原因
- 原生 Delphi 集成: 真正的 VCL 组件和 Object Pascal 源码,而不是 ActiveX 控件或浏览器承载的查看器。
- 签名与加密无需第二家供应商: PAdES B-B 到 B-LTA、RFC 3161 时间戳和 PDF 2.0 AES-256 加密都是本库自身的一部分。多数 Delphi 团队走到这一步时要另外引入独立的签名 SDK 或部署 OpenSSL;在这里只需要一个包、一份许可,以及可供审计的 Pascal 源码。
- 标准工作在代码中可见: 六大 ISO 标准家族都有带条款级结果码的真实验证器,而不是一个勾选框。TXT、HTML、Markdown、JSON 和 CSV 格式的预检输出可直接接入 CI,命令行运行器还会按你指定的条件返回失败退出码。
- 引擎所不具备的 PDF 写入器: 线性化 Fast Web View、object stream 打包,以及逐字节保留前一版文件的脏对象增量修订 —— 这些正是归档系统、Web 交付和审计追踪真正要求的输出格式。
- PDFium 渲染质量: 使用 Chromium PDF 显示背后的同一开源 PDF 引擎家族,同时让集成留在 Delphi 代码库内。
- 查看器与 API 合一: 将成熟的屏幕 PDF 查看器与底层文档访问、搜索、表单、打印、验证 API 和可脚本化 预检 报告结合在一个包内。
- 对恶意输入按恶意对待: stream 解码、内容规范化和结构扫描全部在明确的来源、输出、token、嵌套层级和膨胀比预算下运行,因此畸形或蓄意构造的 PDF 只会返回结构化状态,而不会拖垮进程。
- 无 runtime 版税: 构建桌面应用时无需按文档或最终用户支付 runtime 费用。
- 现代 IDE 支持: 支持 Delphi XE5 到 Delphi 13.1 Florence、C++Builder XE5 到 C++Builder 13.1 Florence,以及 Lazarus / Free Pascal 工作流,覆盖 Win32 和 Win64。
- 持续维护的测试覆盖: Delphi DUnitX、C++Builder GoogleTest 和 Lazarus FPCUnit 测试覆盖主要文档、渲染、表单、结构、打印、缩略图和查看器工作流。
代码示例
procedure TForm1.OpenPdf(const FileName: string);
begin
Pdf.FileName := FileName;
PdfView.Pdf := Pdf;
PdfThumbnailView.Pdf := Pdf;
PdfView.DisplayMode := dmSingleContinuous;
PdfView.FitMode := pfmFitWidth;
PdfView.AllowUserTextSelection := True;
PdfView.Active := True;
end;
procedure TForm1.HighlightInvoiceNumber;
begin
Pdf.PageNumber := PdfView.PageNumber;
if Pdf.FindFirst('Invoice', []) >= 0 then
PdfView.HighlightSearchText('Invoice', False, False);
end;
procedure TForm1.SaveArchiveCopy(const OutputFile: string);
begin
if not Pdf.SaveAsPdfA(OutputFile, pac1b) then
raise Exception.Create('The PDF/A archive copy could not be saved.');
end;
procedure TForm1.SignForLongTermArchive(const OutputFile: string);
var
Options: TPadesSignOptions;
begin
Options := TPadesSignOptions.Default;
Options.CertificateThumbprint := SignerThumbprint;
Options.Level := plB_LTA; // 签名 + TSA 令牌 + DSS + 归档时间戳
Options.TsaUrl := 'https://tsa.example.com/tsr';
Options.Reason := 'Approved for release';
if not Pdf.SignPades(OutputFile, Options) then
raise Exception.Create('The document could not be signed.');
end;
procedure TForm1.CheckSignatureLevel;
var
Result: TPadesValidationResult;
begin
Result := Pdf.ValidatePades;
if Result.IsCompliantAt(plB_LTA) and Result.IsCryptographicallyValid then
ShowMessage(Format('%d signature(s), %d archive time-stamp(s), verified.',
[Result.SignatureCount, Result.DocTimeStampCount]))
else
ShowMessage('The document does not reach the required PAdES baseline.');
end;
典型使用场景
- 内嵌 PDF 查看、搜索、打印和表单工作流的文档管理系统。
- 需要 PDF 审阅、提取、附件处理、归档就绪输出检查、批量 预检 清单和报告附件的会计与发票应用。
- 法律、工程、医疗和政府桌面软件,用户必须在不离开应用的情况下检查、打印、验证、报告和保存 PDF 文档。
- 受监管行业的签名文档工作流 —— 合同、发票、发货单和各类记录,必须带 PAdES B-T 或 B-LTA 签名和可信时间戳,并在多年后仍可验证。
- 需要 PDF 2.0 AES-256 加密并设定明确权限的机密分发场景,加密由应用自身写入,而不是交给外部工具二次处理。
- 合规与摄取工具,需要在将文件路由到外部验证器或归档系统前执行可重复的 PDF/A、PDF/X、PDF/UA、PDF/E、PDF/R 或 PDF/VT marker 检查。
- 需要快速 PDF 显示、页面光栅化、可复制文本和受控打印的报表查看器与内部业务工具。
何时选择此产品
- 当应用需要查看、验证、签名、加密并交付 PDF 文档时,选择 PDFium Delphi Component:专业阅读器基础、PAdES 签名、PDF 2.0 加密、六套标准验证器、线性化与增量输出、大文件性能、无障碍支持、表单和打印,全部来自同一个带源码的软件包。
- 当应用主要是生成文档,而你完全不想随程序分发任何渲染引擎时,选择 HotPDF Component:它自带渲染器、图像编解码器、字体引擎、条码生成、XFA 排版和 Factur-X 验证,并直接编译进你的可执行文件。
- 当需要用一套工具覆盖整个文档生命周期,或者需要 OCR、条码识别、PKCS#11 硬件令牌签名、欧盟信任列表验证,或供非 Delphi 调用方使用的 DLL / ActiveX / Dylib 接口时,选择 PDF Library for Delphi。
想横向比较整个产品家族?请查看 PDF 开发库总览,其中并排对比了 PDFium Delphi Component、losLab PDF Library 和 HotPDF Component。
常见问题
PDFium Delphi Component 是对 PDFium DLL 的简单封装吗?
不是。PDFium 只负责渲染和读取;它无法对文档签名、无法写入加密、无法验证 PDF 标准,也无法产出线性化、object stream 或增量修订。软件包中约 115,000 行 Object Pascal 代码里,有超过 62,000 行位于 PDFium API 中完全没有对应实现的单元,正是这些单元实现了上述能力:PAdES B-B 到 B-LTA 签名、纯 Pascal 的 AES / SHA / ASN.1 密码学栈、PDF 2.0 AES-256 加密、六套 ISO 标准验证器、自研的 PDF 序列化器、XFDF、XMP,以及查看器、阅读器和无障碍架构。
PDFium Delphi Component 使用什么引擎?
它以 PDFium 为渲染基础,PDFium 是 Chromium PDF 显示背后的开源引擎家族。losLab 围绕该引擎构建 Delphi 组件模型、阅读器架构、无障碍层、示例、测试和支持服务。
PDFium Delphi Component 可以对 PDF 文档做数字签名吗?
可以。它实现了 ETSI EN 319 142-1 的 PAdES baseline 配置文件 B-B、B-T、B-LT 和 B-LTA:按 RFC 5652 构建 CMS / CAdES SignedData、向 TSA 发起 RFC 3161 时间戳请求、把证书链收集进 Document Security Store,以及添加归档时间戳。签名密钥通过 Windows CNG 后端使用,支持 RSA-PSS、PKCS#1 和 ECDSA。而 PDFium 本身只能读取已有的签名字典。
可以加密 PDF 文档吗?
可以。SaveAsEncrypted 写入 ISO 32000-2 AES-256 加密,包括算法 2.B 的 R6 口令哈希派生、/O /U /OE /UE /Perms 字典项,以及对全部 stream 和字符串的加密。同时支持 ISO/TS 32003 AES-GCM 和 ISO/TS 32004 PDF MAC 令牌。AES、SHA-256/384/512、HMAC 和 ASN.1 原语均为纯 Object Pascal 实现,不依赖任何外部 C 库。
支持 Lazarus 和 Free Pascal 吗?
支持。软件包包含 Lazarus / Free Pascal 包文件和 LCL 演示,并提供 Delphi 与 C++Builder 的 VCL 组件。
打开超大 PDF 的速度如何?
阅读器采用可定位的按需 PDFium 访问,而不是预先完整加载。在实际测试中,2.x GB 的 PDF 几乎可以立即开始使用。
可以创建或编辑 PDF 文档吗?
它覆盖文档装配:创建文档、添加和删除页面、导入页面范围、移动页面、N-up 拼版、水印、图章和页面内容更新。
支持 AcroForm 和 XFA 表单吗?
支持。它可处理 AcroForm 字段、焦点和选中文本、撤销与重做、生成外观、字段标志、扁平化,并检测 XFA 状态。
可以验证哪些 PDF 标准?
六大标准家族,每一个都有各自的验证器和配套的保存或标记注入 helper:PDF/A(ISO 19005 第 1 至 4 部分,含基于 PDF 2.0 的 A-4 base/f/e)、PDF/X(ISO 15930,含 X-6)、PDF/UA(ISO 14289-1)、PDF/E(ISO 24517-1)、PDF/VT(ISO 16612-2,含 VT-2s 的 MIME stream 打包)和 PDF/R(ISO 23504-1)。PAdES baseline 结构则单独按 ETSI EN 319 142-1 验证。预检报告可导出为 TXT、HTML、Markdown、JSON、CSV、SARIF 2.1.0、JUnit XML 和 NDJSON。验证器覆盖 marker-level 以及持续扩充的一组 file-level 条款;需要正式认证时,请与专用验证引擎配合使用。
是否有运行时版税或按用户收费?
没有。获得许可的应用可免版税发布,不收取按文档或最终用户计算的运行时费用。
许可证包含什么,续订如何计算?
新许可证包含 Object Pascal 源代码、一年更新和一年电子邮件支持。现有客户可按全价 40% 续订更新访问权限。
发现 Delphi PDF Component & Spreadsheet Development 的更多内容
订阅产品更新
订阅后,最新消息会发送到你的邮箱。
