Если вы не используете SetLayer2Text
для установки собственного описания или построения всего внешнего вида (на GetLayer2
XObject), iText создает описание, подобное этому:
StringBuilder buf = new StringBuilder();
buf.Append("Digitally signed by ");
String name = null;
CertificateInfo.X500Name 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(SignUtils.DateToString(signDate));
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
)
Как видите, подписывающий сертификат используется для определения имени подписавшего. Итак, чтобы получить имя в описании, установите сертификат подписавшего перед подписью
_sap.SetCertificate(SIGNER_CERTIFICATE);
В качестве альтернативы, как указано в начале, предоставьте индивидуальное описание
_sap.SetLayer2Text(CUSTOM_DESCRIPTION);
, которое может отображать что угодно хочешь.
Насколько я понимаю: SetContact - это имя подписавшего. CMIIW
Согласно спецификации PDF:
ContactInfo текстовая строка (необязательно) Информация, предоставленная подписавшим, для включения получатель, чтобы связаться с подписавшимся для проверки подписи.
ПРИМЕР 3 Номер телефона.
(ISO 32000-1, Таблица 252 - Записи в словаре подписей)
Таким образом, контактная информация предназначена не для имени подписавшего, а для некоторых средств контакта с ним.