2016-10-01 9 views
1

Я успешно реализую Digital PDF Signing с помощью iTexhSharp.dll (5.5.9), но я хочу изменить формат даты даты подписания, который в настоящее время отображается в ' 2016/10/01 00:00:00 + 05'30 '' этот формат и хотите изменить в DD/MM/YYYY HH: MM: SS. Пожалуйста, помогите мне.PDF Digital Signing: Изменить дату Формат даты входа в внешний вид

Мой код:

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

в PdfSignatureAppearance.GetAppearance(). Вы можете принять это как шаблон для своего кода создания Layer2Text. (Очевидно, вам придется соответствующим образом заменить доступ к членам PdfSignatureAppearance.) В частности, вы видите строку формата даты и можете ее соответствующим образом изменить.