如何为 PDF 进行数字签名
Contents
[
Hide
]
使用数字签名签署 PDF
您可以签署 PDF 文档以确认其内容,或者您可以使用 Aspose.PDF 批准文档。
Aspose.PDF for C++ 支持使用 SignatureField 类对 PDF 文件进行数字签名的功能。您还可以使用 PKCS12 证书认证 PDF 文件。类似于 在 Adobe Acrobat 中添加签名和安全性。
使用 PdfFileSignature 类来签署您的 PDF。
using namespace System;
using namespace Aspose::Pdf;
using namespace Aspose::Pdf::Facades;
void SecuringAndSigning::SignDocument() {
// 用于路径名称的字符串。
String _dataDir("C:\\Samples\\");
String inFile = _dataDir + u"DigitallySign.pdf";
String outFile = _dataDir + u"DigitallySign_out.pdf";
auto document = MakeObject<Document>(inFile);
auto signature = MakeObject<PdfFileSignature>(document);
auto pkcs = MakeObject<Aspose::Pdf::Forms::PKCS7>(_dataDir + u"test.pfx", u"Pa$$w0rd2020"); // 使用 PKCS7/PKCS7Detached
// 对象
System::Drawing::Rectangle rect(300, 100, 400, 200);
signature->Sign(1, true, rect, pkcs);
// 保存输出 PDF 文件
signature->Save(outFile);
}
为数字签名添加时间戳
如何为带有时间戳的 PDF 进行数字签名
Aspose.PDF for C++ 支持通过时间戳服务器或 Web 服务对 PDF 进行数字签名。
时间戳用于指示您签署文档的日期和时间。可靠的时间戳证明您的 PDF 内容在特定时间点存在,并且自那时以来没有更改。
使用 TimestampSettings 类为数字签名或文档添加可信时间戳。
请查看以下代码片段,该代码片段获取时间戳并将其添加到 PDF 文档中:
void SecuringAndSigning::SignWithTimeStampServer() {
// 路径名称的字符串。
String _dataDir("C:\\Samples\\");
auto document = MakeObject<Document>(_dataDir + u"SimpleResume.pdf");
auto signature = MakeObject<PdfFileSignature>(document);
auto pkcs = MakeObject<Aspose::Pdf::Forms::PKCS7>(_dataDir + u"test.pfx", u"Pa$$w0rd2020");
auto timestampSettings = MakeObject<TimestampSettings>(u"https://freetsa.org/tsr", String::Empty); // 用户名/密码可以
// 省略
pkcs->set_TimestampSettings(timestampSettings);
System::Drawing::Rectangle rect(100, 100, 200, 100);
// 创建三种签名类型中的任意一种
signature->Sign(1, u"签名原因", u"联系方式", u"位置", true, rect, pkcs);
// 保存输出 PDF 文件
signature->Save(_dataDir + u"DigitallySignWithTimeStamp_out.pdf");
}