Skip to content
DemoFAQ

PDF 生成模板编辑器

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

查看 GitHub
Flutter Guides Certificate management

证书管理 ​

ComPDF Flutter SDK 自 3.2.0 起支持管理 PKCS#12 证书(.p12、.pfx),用于数字签名。证书接口通过 ComPDFKit 调用,无需打开 PDF。

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

生成证书 ​

使用 CPDFCertificateRequest 指定证书主体、密码和输出路径。输出目录需存在且可写。

dart
final directory = await ComPDFKit.getTemporaryDirectory();
final certificatePath = '${directory.path}/signer.p12';
// certificatePassword 为应用从用户输入获取的证书密码。
final created = await ComPDFKit.generatePkcs12Certificate(
  CPDFCertificateRequest(
    subject: const CPDFCertificateSubject(
      commonName: 'Document Signer',
      organization: 'Example Organization',
    ),
    password: certificatePassword,
    outputPath: certificatePath,
    usage: CPDFCertificateUsage.digitalSignature,
  ),
);

commonName 为必填项。主体还可设置国家、州省、城市、组织部门和电子邮件。生成证书不表示该证书已获得接收方信任。

校验密码与读取信息 ​

dart
final validPassword = await ComPDFKit.checkPkcs12CertificatePassword(
  certificatePath,
  certificatePassword,
);
if (validPassword) {
  final certificate = await ComPDFKit.loadPkcs12Certificate(
    certificatePath,
    certificatePassword,
  );
  if (certificate != null) {
    print(certificate.subject);
    print(certificate.issuer);
    print(certificate.validTo);
    print(certificate.isTrusted);
  }
}

loadPkcs12Certificate() 返回证书主体、签发者、有效期、算法和摘要等信息;无法加载时返回 null。调用还可能抛出原生平台异常,应用应向用户提供失败反馈。

添加受信任证书 ​

dart
final trusted = await ComPDFKit.addTrustedCertificate(
  certificatePath,
  certificatePassword,
);
if (trusted) {
  final certificate = await ComPDFKit.loadPkcs12Certificate(
    certificatePath,
    certificatePassword,
  );
  print(certificate?.isTrusted);
}

信任状态属于当前应用的证书存储,不代表其他应用或文档接收方也信任该证书。添加后重新加载证书以读取最新状态。

证书文件包含私钥,应由应用妥善保存;不要将证书密码写入日志或文档元数据。使用证书签署 PDF,参见创建数字签名。