Compartilhar via


Adicionar uma solicitação de assinatura a um documento XPS

Este tópico descreve como adicionar uma solicitação de assinatura a um documento XPS. Uma solicitação de assinatura solicita que um usuário assine um documento se ele concordar com a intenção de assinatura.

Antes de usar os exemplos de código a seguir em seu programa, leia o aviso de isenção de responsabilidade em Tarefas comuns de programação de assinaturas digitais.

Para adicionar uma solicitação de assinatura a um documento XPS:

  1. Carregue o documento XPS em um gerenciador de assinaturas, conforme descrito em Inicializar o Gerenciador de Assinaturas.
  2. Adicionar um bloco de assinatura ao gerenciador de assinaturas.
  3. Criar uma solicitação de assinatura no novo bloco de assinatura.
  4. Definir as propriedades da solicitação de assinatura:
    1. Definir a intenção da assinatura.
    2. Defina o nome da pessoa cuja assinatura é solicitada (o signatário solicitado).
    3. Defina a data em que a assinatura é obrigatória.
    4. Defina outras propriedades de assinatura, conforme exigido.

O exemplo de código a seguir ilustra como adicionar uma solicitação de assinatura a um documento 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;
}

Usado Nesta Seção

IXpsSignatureBlock

IXpsSignatureBlock::CreateRequest

IXpsSignatureManager

IXpsSignatureManager::AddSignatureBlock

IXpsSignatureRequest

IXpsSignatureRequest::SetIntent

IXpsSignatureRequest::SetRequestedSigner

IXpsSignatureRequest::SetRequestSignByDate

Para obter mais informações

Erros da API de Assinatura Digital do XPS

Erros no Documento XPS

XML Paper Specification