Skip to content
DemoFAQ

PDF 生成模板编辑器

开源可视化 PDF 生成引擎,支持自定义模板,并提供面向开发者的 API,灵活构建文档生成流程。

查看 GitHub
Flutter Guides Verify digital signatures

读取与验证数字签名 ​

使用 CPDFDocument 列出签名并验证其状态。以下示例中的 document 为已打开的签名 PDF。

dart
import 'package:compdfkit_flutter/compdfkit.dart';

读取签名信息 ​

dart
final signatures = await document.getDigitalSignatures();
for (final signature in signatures) {
  print(signature.fieldName);
  print(signature.pageIndex);
  print(signature.permissions);
  for (final signer in signature.signers) {
    for (final certificate in signer.certificates) {
      print(certificate.subject);
      print(certificate.issuer);
    }
  }
}

结果包含签名索引、签名域名称、页码、位置、签署者、签署日期、原因、地点和权限等信息。文档没有数字签名时返回空列表。

验证签名 ​

dart
if (signatures.isNotEmpty) {
  final signature = signatures.first;
  final result = await document.verifyDigitalSignature(
    signature.signatureIndex,
  );
  print('Signature valid: ${result.signatureValid}');
  print('Document unmodified: ${result.documentUnmodified}');
  print('Certificate trusted: ${result.certificateTrusted}');
  print('Certificate expired: ${result.certificateExpired}');
}

必须传入 signature.signatureIndex,不要使用签名在返回列表中的位置代替。验证针对已保存的签名文件;有待保存的内容时,先明确保存或放弃修改,再检查目标文件。

结果含义
signatureValid签名验证结果
documentUnmodified文档是否保持签署后的完整性
certificateTrusted签署证书是否被信任
certificateExpired签署证书是否过期
timestampSource时间信息的来源
embeddedTimestampValid内嵌时间戳验证结果,可能为 null
timestampTrusted时间戳机构信任结果,可能为 null
ltvEnabled文档级长期验证材料状态

签名有效性、证书信任和文档修改状态应分别展示,不要仅根据其中一个字段判断全部验证通过。时间戳和长期验证的说明见时间戳与长期验证。

Android 当前未提供公开的签后修改明细,不能依赖 modifications 枚举全部修改;文档完整性应检查验证结果。