<< Click to Display Table of Contents >> Разработка > Примеры разработки > Документы Как изменить отметку об ЭП |
В Directum RX есть возможность преобразовать документ в формат PDF и добавить отметку об электронной подписи (ЭП). Это позволяет наглядно подтвердить факт подписания документа ЭП. При этом формат отметки меняется в зависимости от того, какой ЭП подписан документ:
•квалифицированная ЭП. В отметке содержится информация о сертификате, его владельце и сроке действия:
•простая ЭП. В отметке содержится ФИО сотрудника, который подписал документ, и его идентификатор в системе:
Администратор может настроить размещение отметки об ЭП в шаблонах документов. Разработчик может изменить оформление отметки и состав отображаемых данных на ней для всех видов документов или конкретного вида документа, например, только для входящих счетов.
Ситуация
Для всех видов документов необходимо изменить оформление отметки об ЭП: поменять логотип, заменить цвет на фиолетовый, добавить информацию о дате и времени подписания.
Решение
1.В своем решении перекройте модуль Docflow.
2.В перекрытый модуль добавьте ресурсы, которые содержат HTML-код отметки об ЭП для квалифицированной и простой подписи. Для этого скопируйте существующие ресурсы из модуля Docflow:
•в базовом решении Sungero.DirectumRX выберите модуль Docflow и в контекстном меню выберите пункт Открыть ресурсы;
•в открывшемся редакторе ресурсов найдите строки с названиями HtmlStampTemplateForCertificate для квалифицированной ЭП и HtmlStampTemplateForSignature для простой ЭП;
•в контекстном меню одного из ресурсов выберите пункт Копировать. Откройте ресурсы перекрытого модуля Docflow и с помощью пункта Вставить добавьте скопированный ресурс. Аналогично скопируйте второй ресурс. Для удобства в названия добавим приписку Custom.
Отметка об ЭП формируется на основе данных, получаемых из HTML-кода. В нем вручную прописываются настройки отметки.
3.Доработайте HTML-код для каждого ресурса:
•измените цвет #003f75 на фиолетовый #9400D3;
•измените логотип;
•добавьте параметр Дата подписания {SigningDate}.
Пример для ресурса HtmlStampTemplateForCertificateCustom
|
Пример для ресурса HtmlStampTemplateForSignatureCustom
|
4.Переопределите функцию GetSignatureMarkForCertificateAsHtml() модуля Docflow, которая используется для получения отметки о квалифицированной ЭП. В функции заполняются параметры HTML-кода из ранее добавленного ресурса HtmlStampTemplateForCertificateCustom. Для этого в перекрытый модуль Docflow добавьте серверную функцию и напишите код:
/// <summary>
/// Получить отметку об ЭП для сертификата из подписи.
/// </summary>
/// <param name="signature">Подпись.</param>
/// <returns>Изображение отметки об ЭП для сертификата в виде HTML.</returns>
/// <description>
/// Пример перекрытия отметки о квалифицированной ЭП для всех документов.
/// В отметке о квалифицированной ЭП изменены логотип и пропорции заголовка.
/// Также в отметку добавлены дата и время подписания.
/// Цвет отметки изменен на фиолетовый.
/// </description>
public override string GetSignatureMarkForCertificateAsHtml(Sungero.Domain.Shared.ISignature signature, ISignatureStampParams signatureStampParams)
{
if (signature == null)
return string.Empty;
var certificate = signature.SignCertificate;
if (certificate == null)
return string.Empty;
var certificateSubject = this.GetCertificateSubject(signature);
var signatoryFullName = string.Format("{0} {1}", certificateSubject.Surname, certificateSubject.GivenName).Trim();
if (string.IsNullOrEmpty(signatoryFullName))
signatoryFullName = certificateSubject.CounterpartyName;
string html = Resources.HtmlStampTemplateForCertificateCustom;
html = html.Replace("{SignatoryFullName}", signatoryFullName);
html = html.Replace("{Thumbprint}", certificate.Thumbprint.ToLower());
var validity = string.Format("{0} {1} {2} {3}",
Company.Resources.From,
certificate.NotBefore.Value.ToShortDateString(),
Company.Resources.To,
certificate.NotAfter.Value.ToShortDateString());
html = html.Replace("{Validity}", validity);
html = html.Replace("{SigningDate}", signature.SigningDate.ToString("g"));
return html;
}
5.Аналогично переопределите функцию GetSignatureMarkForSimpleSignatureAsHtml() модуля Docflow, которая используется для получения отметки простой ЭП. В функции заполняются параметры HTML-кода из ранее добавленного ресурса HtmlStampTemplateForSignatureCustom.
/// <summary>
/// Получить отметку об ЭП для подписи.
/// </summary>
/// <param name="signature">Подпись.</param>
/// <returns>Изображение отметки об ЭП для подписи в виде HTML.</returns>
/// <description>
/// Пример перекрытия отметки о простой ЭП для всех документов.
/// В отметке о простой ЭП изменены логотип и пропорции заголовка.
/// Также в отметку добавлены дата и время подписания.
/// Цвет отметки изменeн на фиолетовый.
/// </description>
public override string GetSignatureMarkForSimpleSignatureAsHtml(Sungero.Domain.Shared.ISignature signature, ISignatureStampParams signatureStampParams)
{
if (signature == null)
return string.Empty;
var signatoryFullName = signature.SignatoryFullName;
var signatoryId = signature.Signatory.Id;
string html = Resources.HtmlStampTemplateForSignatureCustom;
html = html.Replace("{SignatoryFullName}", signatoryFullName);
html = html.Replace("{SignatoryId}", signatoryId.ToString());
html = html.Replace("{SigningDate}", signature.SigningDate.ToString("g"));
return html;
}
В результате отметка об ЭП будет выглядеть следующим образом:
Квалифицированная ЭП |
Простая ЭП |
---|---|
© Компания Directum, 2024 |