本页内容
创建数字签名
创建数字签名分为两个步骤:
创建签名域
在签名域填写签名
通过这两个步骤,您可以自签文件,或邀请其他人在您创建的签名域进行签名。
创建签名域
ComPDFKit 支持自定义签名域表单样式,以及通过文字,图片,手绘来自定义签名外观。
以下是创建签名域的示例代码:
C#
// 创建签名域。
//
// Page Index: 0
// Rect: CRect(28, 420, 150, 370)
// Border RGB:{ 0, 0, 0 }
// Widget Background RGB: { 150, 180, 210 }
//
CPDFPage page = document.PageAtIndex(0);
CPDFSignatureWidget signatureField = page.CreateWidget(C_WIDGET_TYPE.WIDGET_SIGNATUREFIELDS) as CPDFSignatureWidget;
signatureField.SetRect(new CRect(28, 420, 150, 370));
signatureField.SetWidgetBorderRGBColor(new byte[] { 0, 0, 0 });
signatureField.SetWidgetBgRGBColor(new byte[] { 150, 180, 210 });
signatureField.UpdateAp();
在签名域中填写签名
在签名域中填写签名的步骤如下:
持有一个 PKCS12 标准的证书(PFX或P12格式),并确保知道它的密码,您可以通过 ComPDFKit SDK 内置的方法创建符合标准的数字证书。
通过 ComPDFKit 的接口设定数字签名的外观。
将数据写入签名域并保存。
在签名域中填写签名的示例代码:
C#
// 在签名域签名。
//
// Text: Grantor Name
// Content:
// Name: get grantor name from certificate
// Date: now(yyyy.mm.dd)
// Reason: I am the owner of the document.
// DN: Subject
// IsContentAlginLeft: false
// IsDrawLogo: True
// LogoBitmap: logo.png
// text color RGB: { 0, 0, 0 }
// 输出的文件名: document.FileName + "_Signed.pdf"
//
string name = GetGrantorFromDictionary(certificate.SubjectDict) + "\n";
string date = DateTime.Now.ToString("yyyy.MM.dd HH:mm:ss");
string reason = "I am the owner of the document.";
string location = certificate.SubjectDict["C"];
string DN = certificate.Subject;
CPDFSignatureConfig signatureConfig = new CPDFSignatureConfig
{
Text = GetGrantorFromDictionary(ce string filePath = outputPath + "\\" + document.FileName + "_Signed.pdf";
signatureField.UpdataApWithSignature(signatureConfig);rtificate.SubjectDict),
Content = "Name: " + name + "\n" +
"Date: " + date + "\n" +
"Reason: "+ reason +" \n" +
"Location: "+ location + "\n" +
"DN: " + DN + "\n",
IsContentAlginLeft = false,
IsDrawLogo = true,
LogoBitmap = new Bitmap("Logo.png"),
textColor = new float[] { 0, 0, 0 },
contentColor = new float[] { 0, 0, 0 }
};
string filePath = outputPath + "\\" + document.FileName + "_Signed.pdf";
signatureField.UpdataApWithSignature(signatureConfig);
document.WriteSignatureToFilePath(signatureField,
filePath,
certificatePath, password,
location,
reason, CPDFSignaturePermissions.CPDFSignaturePermissionsNone);