PDF 生成模板编辑器
开源可视化 PDF 生成引擎,支持自定义模板,并提供面向开发者的 API,灵活构建文档生成流程。
ComPDF Flutter SDK 自 3.2.0 起支持管理 PKCS#12 证书(.p12、.pfx),用于数字签名。证书接口通过 ComPDFKit 调用,无需打开 PDF。
import 'package:compdfkit_flutter/compdfkit.dart';使用 CPDFCertificateRequest 指定证书主体、密码和输出路径。输出目录需存在且可写。
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 为必填项。主体还可设置国家、州省、城市、组织部门和电子邮件。生成证书不表示该证书已获得接收方信任。
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。调用还可能抛出原生平台异常,应用应向用户提供失败反馈。
final trusted = await ComPDFKit.addTrustedCertificate(
certificatePath,
certificatePassword,
);
if (trusted) {
final certificate = await ComPDFKit.loadPkcs12Certificate(
certificatePath,
certificatePassword,
);
print(certificate?.isTrusted);
}信任状态属于当前应用的证书存储,不代表其他应用或文档接收方也信任该证书。添加后重新加载证书以读取最新状态。
证书文件包含私钥,应由应用妥善保存;不要将证书密码写入日志或文档元数据。使用证书签署 PDF,参见创建数字签名。