Compartir a través de


Agregar una solicitud de firma a un documento XPS

En este tema se describe cómo agregar una solicitud de firma a un documento XPS. Una solicitud de firma pide a un usuario que firme un documento si está de acuerdo con la intención de firma.

Antes de usar los siguientes ejemplos de código en el programa, lea la declinación de responsabilidades en Tareas comunes de programaciónde firmas digitales.

Para agregar una solicitud de firma a un documento XPS:

  1. Cargue el documento XPS en un administrador de firmas, como se describe en Inicializar el Administradorde firmas.
  2. Agregue un bloque de firma al administrador de firmas.
  3. Cree una solicitud de firma en el nuevo bloque de firma.
  4. Establezca las propiedades de la solicitud de firma:
    1. Establezca la intención de firma.
    2. Establezca el nombre de la persona cuya firma se solicita (el firmante solicitado).
    3. Establezca la fecha en que se requiere la firma.
    4. Establezca otras propiedades de firma según sea necesario.

En el ejemplo de código siguiente se muestra cómo agregar una solicitud de firma a un 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 en esta sección

IXpsSignatureBlock

IXpsSignatureBlock::CreateRequest

IXpsSignatureManager

IXpsSignatureManager::AddSignatureBlock

IXpsSignatureRequest

IXpsSignatureRequest::SetIntent

IXpsSignatureRequest::SetRequestedSigner

IXpsSignatureRequest::SetRequestSignByDate

Para obtener más información

Errores de LA API de firma digital XPS

Errores del documento XPS

XML Paper Specification