Добавление запроса подписи в документ XPS
В этом разделе описывается, как добавить запрос подписи в документ XPS. Запрос подписи предложит пользователю подписать документ, если он или она согласен с намерением подписи.
Прежде чем использовать приведенные ниже примеры кода в программе, прочтите заявление об отказе в задачах программирования Common Digital Signature.
Чтобы добавить запрос подписи в документ XPS, выполните следующие действия.
- Загрузите документ XPS в диспетчер подписей, как описано в разделе "Инициализация диспетчера подписей".
- Добавьте блок подписи в диспетчер подписей.
- Создайте запрос подписи в новом блоке подписи.
- Задайте свойства запроса подписи:
- Задайте намерение подписи.
- Задайте имя пользователя, подпись которого запрашивается (запрошенный подписыватель).
- Задайте дату, когда требуется подпись.
- Задайте другие свойства подписи по мере необходимости.
В следующем примере кода показано, как добавить запрос подписи в документ XPS.
HRESULT
AddSignatureRequestToDocument (
__in IXpsSignatureManager *signatureManager,
__in LPCWSTR reasonForSignatureRequest,
__in LPCWSTR nameOfRequestedSigner,
__in LPCWSTR requestSignByDate
)
{
HRESULT hr = S_OK;
IXpsSignatureBlock *signatureDefinition = NULL;
IXpsSignatureRequest *signatureRequest = NULL;
// Create a new signature block and get a pointer to it
hr = signatureManager->AddSignatureBlock (NULL, 0, &signatureDefinition);
if (SUCCEEDED(hr)) {
// Create a new signature request to use for this signature block
hr = signatureDefinition->CreateRequest(NULL, &signatureRequest);
}
if (SUCCEEDED(hr)) {
// Initialize the properties of the signature request
// Set the string that describes the purpose of the signature
// to the person who will sign the document.
hr = signatureRequest->SetIntent(reasonForSignatureRequest);
}
if (SUCCEEDED(hr)) {
// Set the name of the person whose signature is requested.
hr = signatureRequest->SetRequestedSigner(nameOfRequestedSigner);
}
if (SUCCEEDED(hr)) {
// Set the date that the person should sign the document.
// The person is requested to sign the document on or before
// the date specified in this field. Refer to the help text
// for the correct format of this string.
hr = signatureRequest->SetRequestSignByDate(requestSignByDate);
}
if (NULL != signatureDefinition) signatureDefinition->Release();
if (NULL != signatureRequest) signatureRequest->Release();
return hr;
}
См. также
-
Используется в этом разделе
-
Дополнительные сведения