Skip to content

创建数字签名

创建数字签名分为两个步骤:

  1. 创建签名域

  2. 在签名域填写签名

通过这两个步骤,您可以自签文件,或邀请其他人在您创建的签名域进行签名。

创建签名域

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();

在签名域中填写签名

在签名域中填写签名的步骤如下:

  1. 持有一个 PKCS12 标准的证书(PFX或P12格式),并确保知道它的密码,您可以通过 ComPDFKit SDK 内置的方法创建符合标准的数字证书。

  2. 通过 ComPDFKit 的接口设定数字签名的外观。

  3. 将数据写入签名域并保存。

在签名域中填写签名的示例代码:

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);