这是在签署文档之前创建签名外观的代码。
PdfStamper stamper = PdfStamper.CreateSignature(reader, os, '\0');
// Creating the appearance
PdfSignatureAppearance appearance = stamper.SignatureAppearance;
appearance.Reason = "Lorem apsum";
appearance.Contact = "";
appearance.Location = "";
appearance.SignatureRenderingMode = PdfSignatureAppearance.RenderingMode.DESCRIPTION;
appearance.CertificationLevel = PdfSignatureAppearance.NOT_CERTIFIED;
appearance.SetVisibleSignature(new iTextSharp.text.Rectangle(10, 10, 149, 69), reader.NumberOfPages, "Page1_Loc_5");
//Creating the appearance
“联系人”属性为空,我想用签名者的姓名填充
我正在从userX509Certificate获取签名者的名字。
string responseXML = System.IO.File.ReadAllText(Server.MapPath("~/ResponseSignatureXML.txt"));
XmlDocument xmlDoc = new XmlDocument();
xmlDoc.LoadXml(responseXML);
XmlElement EsignResp = xmlDoc.DocumentElement;
XmlNodeList nodeList = xmlDoc.GetElementsByTagName("UserX509Certificate");
Byte[] Certificate = Encoding.UTF8.GetBytes(nodeList[0].FirstChild.InnerText);
X509Certificate cert = new X509Certificate(Certificate);
string CertificateIssuedTo = cert.GetName();
@注意:在准备签名外观时,此签名者名称不可用。
准备具有外观的文件后。计算该文件(即src文件)的哈希值并调用外部服务,作为响应,我得到了xmlsiganture,我曾将其用于在文档上放置签名。
在放置签名之前,如何在src文件中附加/更改签名可视化?
将签名放置在文档上的代码。(带有pkcs7签名的签名响应)
XmlNodeList nodeList = xmlDoc.GetElementsByTagName("Signatures");
string signature = nodeList[0].FirstChild.InnerText;
using (PdfReader reader = new PdfReader(src))
{
using (FileStream os = new FileStream(dest, FileMode.Create))
{
byte[] encodedSignature = Convert.FromBase64String(signature);
IExternalSignatureContainer external = new MyExternalSignatureContainer(encodedSignature);
MakeSignature.SignDeferred(reader, "Page1_Loc_5", os, external);
}
}
此处的数字签名者显示空白而不是签名者姓名。
以下是digital signature所引用的文档截图。 C# Code如何显示由布鲁诺·斯派克曼(Bruno Spiceman)签名的 Digitaly 作为签名者的姓名