Condividi tramite


Aggiungere una richiesta di firma a un documento XPS

In questo argomento viene descritto come aggiungere una richiesta di firma a un documento XPS. Una richiesta di firma richiede a un utente di firmare un documento se accetta la finalità della firma.

Prima di usare gli esempi di codice seguenti nel programma, leggere la dichiarazione di non responsabilità in Common Digital Signature Programming Tasks (Attività comuni di programmazione delle firme digitali).

Per aggiungere una richiesta di firma a un documento XPS:

  1. Caricare il documento XPS in un gestore delle firme, come descritto in Inizializzare Signature Manager.
  2. Aggiungere un blocco di firma al gestore delle firme.
  3. Creare una richiesta di firma nel nuovo blocco di firma.
  4. Impostare le proprietà della richiesta di firma:
    1. Impostare la finalità della firma.
    2. Impostare il nome della persona la cui firma è richiesta (il firmatario richiesto).
    3. Impostare la data di richiesta della firma.
    4. Impostare altre proprietà della firma in base alle esigenze.

Nell'esempio di codice seguente viene illustrato come aggiungere una richiesta di 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;
}

Usato in questa sezione

IXpsSignatureBlock

IXpsSignatureBlock::CreateRequest

IXpsSignatureManager

IXpsSignatureManager::AddSignatureBlock

IXpsSignatureRequest

IXpsSignatureRequest::SetIntent

IXpsSignatureRequest::SetRequestedSigner

IXpsSignatureRequest::SetRequestSignByDate

Ulteriori informazioni

Errori dell'API di firma digitale XPS

Errori del documento XPS

Specifica di carta XML