次の方法で共有


XPS ドキュメントに署名要求を追加する

このトピックでは、XPS ドキュメントに署名要求を追加する方法について説明します。 署名要求では、ユーザーが署名の意図に同意した場合に、ドキュメントへの署名を求めます。

プログラムで次のコード例を使用する前に、「一般的なデジタル署名プログラミング タスク」の免責事項をお読みください。

XPS ドキュメントに署名要求を追加するには、次のようにします。

  1. 署名マネージャーの初期化」の説明に従って、XPS ドキュメントを署名マネージャーに読み込みます。
  2. 署名マネージャーに署名ブロックを追加します。
  3. 新しい署名ブロックに署名要求を作成します。
  4. 署名要求のプロパティを設定します。
    1. 署名の意図を設定します。
    2. 署名が要求されるユーザー (要求された署名者) の名前を設定します。
    3. 署名が要求される日付を設定します。
    4. 必要に応じて、その他の署名プロパティを設定します。

次のコード例は、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;
}

このセクションで使用

IXpsSignatureBlock

IXpsSignatureBlock::CreateRequest

IXpsSignatureManager

IXpsSignatureManager::AddSignatureBlock

IXpsSignatureRequest

IXpsSignatureRequest::SetIntent

IXpsSignatureRequest::SetRequestedSigner

IXpsSignatureRequest::SetRequestSignByDate

詳細情報

XPS デジタル署名 API のエラー

XPS ドキュメントのエラー

XML Paper Specification