2016-10-01 1004 views
1

我已经使用iTexhSharp.dll(5.5.9)成功实施了数字PDF签名,但是我想更改签名日期的日期格式,当前显示为' 2016/10/01 00:00:00 + 05'30''这种格式,并想在DD/MM/YYYY HH:MM:SS中更改。请帮助我。PDF数字签名:更改签名日期格式出现的日期

我的代码:

PdfSignatureAppearance appearance = stamper.SignatureAppearance; 
//appearance.Reason = SignReason; 
//appearance.Location = SignLocation; 
appearance.SignDate = DateTime.Now.Date; 
appearance.SetVisibleSignature(new iTextSharp.text.Rectangle(xPos, yPos, xPos + 200, yPos + 100), PageNo, "Signature1");//.IsInvisible 

// Custom text and background image 
appearance.Image = iTextSharp.text.Image.GetInstance(SignatureImg); 
appearance.ImageScale = 0.6f; 
appearance.Image.Alignment = 300; 
appearance.Acro6Layers = true; 

//digital signature 
IExternalSignature es = new PrivateKeySignature(pk, "SHA-256"); 
MakeSignature.SignDetached(appearance, es, new Org.BouncyCastle.X509.X509Certificate[] { pk12.GetCertificate(alias).Certificate }, null, null, null, 0, CryptoStandard.CMS); 

    stamper.Close(); 

回答

1

您可以设置使用PdfSignatureAppearance财产Layer2Text在签名可视化所用的文字:

appearance.Layer2Text = "..."; 

默认情况下iTextSharp的创建这段文字是这样

StringBuilder buf = new StringBuilder(); 
buf.Append("Digitally signed by "); 
String name = null; 
CertificateInfo.X509Name x500name = CertificateInfo.GetSubjectFields((X509Certificate)signCertificate); 
if (x500name != null) { 
    name = x500name.GetField("CN"); 
    if (name == null) 
     name = x500name.GetField("E"); 
} 
if (name == null) 
    name = ""; 
buf.Append(name).Append('\n'); 
buf.Append("Date: ").Append(signDate.ToString("yyyy.MM.dd HH:mm:ss zzz")); 
if (reason != null) 
    buf.Append('\n').Append(reasonCaption).Append(reason); 
if (location != null) 
    buf.Append('\n').Append(locationCaption).Append(location); 
text = buf.ToString(); 

in PdfSignatureAppearance.GetAppearance()。您可以将其作为您的Layer2Text创建代码的模板。 (很明显,您必须适当地更换对PdfSignatureAppearance成员的访问。)特别是您会看到日期格式字符串,并可以相应地更改它。