Skip to main content
All docs
V26.1
  • IPdfSignatureOptionsProviderAsync Interface

    When implemented, provides asynchronous access to digital signatures in the Web Document Viewer.

    Namespace: DevExpress.XtraReports.Web.WebDocumentViewer

    Assembly: DevExpress.XtraReports.v26.1.dll

    Declaration

    public interface IPdfSignatureOptionsProviderAsync

    Remarks

    In MVC and Web Forms applications, use a synchronous approach to get a dictionary of available signatures. If you use asynchronous code to get the signatures, pass false to the ConfigureAwait method throughout the entire chain of methods:

    public async Task<Dictionary<string, PdfSignatureOptions>> GetAvailableOptionsAsync() {
        var signatures = await GetMySignaturesAsync(...).ConfigureAwait(false);
        return signatures;
    }
    

    Example

    The following example shows how to sign a document exported to PDF from the Web Document Viewer’s UI:

    View Example: How to Sign the Exported PDF Document

    Implement the IPdfSignatureOptionsProviderAsync interface to register signatures. The GetAvailableOptionsAsync() method returns a dictionary of value pairs: signature certificate identifiers and PdfSignatureOptions objects:

    using System;
    using System.Collections.Generic;
    using System.IO;
    using System.Threading.Tasks;
    using DevExpress.XtraPrinting;
    using DevExpress.XtraReports.Web.WebDocumentViewer;
    using Microsoft.AspNetCore.Hosting;
    
    namespace SignPdfDocumentExample.Services {
        public class CustomPdfSignatureOptionsProviderAsync : IPdfSignatureOptionsProviderAsync {
            readonly Dictionary<string, PdfSignatureOptions> signatures = new Dictionary<string, PdfSignatureOptions>();
            public CustomPdfSignatureOptionsProviderAsync(IWebHostEnvironment webHostEnvironment) {
                var signatureDictionaryPath = Path.Join(webHostEnvironment.ContentRootPath, "Signatures");
                signatures.Add(Guid.NewGuid().ToString(), new PdfSignatureOptions() {
                    Certificate = new System.Security.Cryptography.X509Certificates.X509Certificate2(Path.Combine(signatureDictionaryPath, "certificate.pfx"), "123"),
                    ContactInfo = "Jane Cooper",
                });
                signatures.Add(Guid.NewGuid().ToString(), new PdfSignatureOptions() {
                    Certificate = new System.Security.Cryptography.X509Certificates.X509Certificate2(Path.Combine(signatureDictionaryPath, "certificate.pfx"), "123"),
                    ContactInfo = "John Smith",
                    Location = "Australia",
                    Reason = "I Agree",
                    ImageSource = DevExpress.XtraPrinting.Drawing.ImageSource.FromFile(Path.Combine(signatureDictionaryPath, "John_Smith.png"))
                });
            }
    
            public Task<Dictionary<string, PdfSignatureOptions>> GetAvailableOptionsAsync() {
                return Task.FromResult(signatures);
            }
        }
    }
    

    To sign a report, select a signature from the drop-down list in PDF Export Options:

    Web Document Viewer - PDF Export Options - Signatures

    You can also specify or modify ContactInfo, Location, Reason, and AccessibleDescription in the Signature Options section. These fields are populated with signature attributes specified in the IPdfSignatureOptionsProviderAsync implementation. Changes affect only the exported PDF document.

    Web Document Viewer - PDF Export Options - Signature Options

    During export to PDF, XRPdfSignature is converted to a signature with the specified settings:

    Web Document Viewer - Signed Document

    See Also