跳到内容
  • 福昕首页
  • 开发中心
  • SDK文档资料
  • 福昕首页
  • 开发中心
  • SDK文档资料
申请试用
  • 企业自动化
    • Compressor
  • 福昕CloudAPI
  • 福昕PDF SDK 软件开发工具包
    • 福昕PDF SDK(ActiveX)
    • 福昕PDF SDK(桌面/服务器)
    • 福昕PDF SDK(Plug-in)
    • 福昕 PDF SDK(安卓)
    • 福昕PDF SDK(iOS)
    • 福昕PDF SDK(Web)
  • 福昕管理控制台
    • 公有云
    • 私有云
    • 通用情况
  • 福昕阅读器
    • RMS插件
  • 福昕高级编辑器
    • AI助手
    • Mac版本
      • 常规问题
    • windows版本
      • ECM集成
      • 互联PDF
      • 企业管理指南
      • 保护
      • 内容编辑
      • 创建PDF
      • 压缩
      • 图章
      • 安装与卸载
      • 常见问题
      • 打印
      • 注释/评论
      • 福昕插件
      • 翻译助手
      • 翻译助手教程
      • 试用与激活
      • 转换
      • 页面管理
    • 教育用户
      • 论文查重
      • 论文畅
      • 操作指南
    • 网页版
      • 电子签章
    • 订阅
    • 资源
  • 福昕高级编辑器Linux版本
  • 福船图纸管理系统
  • 福昕PDF SDK 软件开发工具包 > 福昕PDF SDK(Web)
  • 标签:
  • API,PDF签名,Signature,Signature_State,兼容性,签名,验证

如何检测PDF签名状态与验证签名有效性

  • 福昕知识库
  • 2025-09-28

通过福昕PDF SDK for Web的API,可以编程方式检测PDF文档的签名状态并验证签名有效性。

检测PDF签名状态

使用PDFSignature类的isSigned()方法检查特定签名域是否已被签名:

// 假设你已经获取到了一个签名域对象 signatureField
if (signatureField.isSigned()) {
console.log("该PDF文档已签名。");
} else {
console.log("该PDF文档未签名。");
}

验证签名有效性

验证签名有效性的流程包含以下关键步骤:

  1. 获取验证所需信息:从已签名域中提取原始文件流、签名覆盖范围信息(byteRange)、签名数据(signedData)和签名者信息
  2. 计算摘要:对签名覆盖范围的文件流进行摘要计算
  3. 验证签名:使用证书验证摘要与签名数据的匹配性,同时检查签名者信息有效性和时间戳状态

Foxit PDF SDK for Web提供的PDFDoc.verifySignature()方法可简化此过程:

// 使用 PDFDoc.verifySignature 方法进行验证
const verificationResult = await signedPDF.verifySignature(
signatureField, // 要验证的签名域对象
function verify(signatureField, plainBuffer, signedData, hasDataOutOfScope) {
// 这里是你的自定义验证逻辑
// plainBuffer 是原始数据缓冲区
// signedData 是签名数据
// 需要返回一个 Promise,解析为签名状态(Signature_State)
return yourCustomVerificationLogic(plainBuffer, signedData);
}
);

// verificationResult 是一个数字,对应不同的签名状态
console.log("签名验证结果状态码:", verificationResult);

常见Signature_State状态值包括(具体数值请参考官方文档):

  • 0:验证成功,签名有效
  • 非零值:表示各类验证失败原因,如文档被篡改、签名证书无效、签名过期等

主要API方法参考如下表格:

目的方法说明
检查是否签名PDFSignature.isSigned()返回一个布尔值,指示该签名域是否已被签名。
获取验证信息PDFSignature.getByteRange()获取签名域的字节范围信息,用于验证。
获取验证信息PDFSignature.getFilter()获取签名的过滤器类型。
获取验证信息PDFSignature.getSubfilter()获取签名的子过滤器类型。
执行验证PDFDoc.verifySignature(signatureField, verifyHandler)执行签名验证流程,需要提供自定义的验证处理函数。
(全局)设置验证处理器PDFUI.setVerifyHandler(verifyFunction)设置全局的验证处理器,当需要验证签名时会被调用。

版本兼容性重要说明

请注意:自11.0.0版本起,福昕对签名与验签相关接口进行了重构,引入了SignatureWorkflowService等新接口来统一管理流程。如果你使用的是较新的版本(11.0.0及以上),建议查阅最新的开发文档以了解最新的API使用方式。上述基于PDFSignature类和PDFDoc.verifySignature的方法在11.0.0版本后仍然可用,但部分全局设置接口(如PDFUI.setVerifyHandler)的用法可能有所调整。

相关内容

云文档列表右键菜单与程序语言不一致

如何重复使用区域高亮的功能

如何在页面中总是显示文档页面大小

如何实现总是在新窗口中打开文件

如何实现PDF批量转换为word

如何设置编辑器默认启动界面

复制标注粘贴到另一文档后方向变化

在PDF文档上添加图片章打印不显示图章

虚拟打印时如何保持原始文档的页面方向混排模式

如何给PDF文档自动创建书签

推荐内容

云文档列表右键菜单与程序语言不一致

如何重复使用区域高亮的功能

如何在页面中总是显示文档页面大小

如何实现总是在新窗口中打开文件

如何实现PDF批量转换为word

如何设置编辑器默认启动界面

复制标注粘贴到另一文档后方向变化

在PDF文档上添加图片章打印不显示图章

虚拟打印时如何保持原始文档的页面方向混排模式

如何给PDF文档自动创建书签

产品
  • 应用行业
  • 白皮书
开发支持
  • 开发中心
  • SDK文档资料

销售咨询:010-50951668

客服电话:0591-38509808

销售咨询
微信公众号

©2025 福建福昕软件开发股份有限公司 版权所有

隐私策略