Add digital signature to word document using C#

1

I'm building an application for adding digital signature to word file, for that i'm using below code.

    private void CreateNewPage()
    {
        object missing = System.Reflection.Missing.Value;
        object fileName = @"F:\Doc\test.docx";
        object readOnly = false;
        object isVisible = true;

        //Start Word and open a document.  
        Microsoft.Office.Interop.Word._Application oWord;
        Microsoft.Office.Interop.Word._Document oDoc;
        oWord = new Microsoft.Office.Interop.Word.Application();
        oWord.Visible = true;

        oDoc = oWord.Documents.Open(ref fileName, ref missing, ref readOnly,
            ref missing, ref missing, ref missing, ref missing, ref missing,
            ref missing, ref missing, ref missing, ref isVisible, ref missing,
            ref missing, ref missing, ref missing);

        //  var numberOfPages = oDoc.ComputeStatistics(Word.WdStatistic.wdStatisticPages, false);

        object oEndOfDoc = "\\endofdoc";
        object paramNextPage = Microsoft.Office.Interop.Word.WdBreakType.wdSectionBreakNextPage;

        oDoc.Bookmarks.get_Item(ref oEndOfDoc).Range.InsertBreak(ref paramNextPage);
        //Insert a page break  
        object breakPage = Microsoft.Office.Interop.Word.WdBreakType.wdPageBreak;


        object saveOption = Microsoft.Office.Interop.Word.WdSaveOptions.wdDoNotSaveChanges;
        object originalFormat = Microsoft.Office.Interop.Word.WdOriginalFormat.wdOriginalDocumentFormat;
        object routeDocument = false;

        object what = Microsoft.Office.Interop.Word.WdGoToItem.wdGoToPage;
        object which = Microsoft.Office.Interop.Word.WdGoToDirection.wdGoToLast;
        object count = 3;

        oWord.Selection.GoTo(ref what, ref which, ref count, ref missing);

        object sigID = "{00000000-0000-0000-0000-000000000000}";
      

        try
        {
            oWord.Activate();

            SignatureSet signatureSet = oWord.ActiveDocument.Signatures;
            // signatureSet.ShowSignaturesPane = false;
            Signature objSignature = signatureSet.AddSignatureLine(sigID);
            objSignature.Setup.SuggestedSigner = "docSigner";
            objSignature.Setup.SuggestedSignerEmail = "abc@xyz.com";
            objSignature.Setup.ShowSignDate = true;
            //  dynamic shape = objSignature.SignatureLineShape;
        }
        catch (Exception ex) { MessageBox.Show(ex.Message); }

        oWord.Documents.Save();
        oWord.Quit();

        try
        {
            Marshal.ReleaseComObject(oWord);
        }
        catch (Exception e) { MessageBox.Show(e.Message); }
    }

But i'm encountered an error at below location :

Line

SignatureSet signatureSet = oWord.ActiveDocument.Signatures;

Error

Library not registered. (Exception from HRESULT: 0x8002801D (TYPE_E_LIBNOTREGISTERED))

Can any one having any idea, how to solve this issue. Or have any other solution to adding signature into Word/PDF file.

c#
ms-word
digital-signature
asked on Stack Overflow Feb 1, 2017 by Ashish Rathore • edited Jun 20, 2020 by Community

1 Answer

-1

Or have any other solution to adding signature into Word/PDF file.

As an alternative solution, you can use GroupDocs.Signature for .NET API to add digital signatures to Word or PDF documents.

 using (Signature signature = new Signature("sample.docx"))
 {    
     // initialize digital option with certificate file path
     DigitalSignOptions options = new DigitalSignOptions("certificate.pfx")
     {
         // optional: setup image file path
         ImageFilePath = "sample.jpg",
         // set signature position
         Left = 100,
         Top = 100,   
         // set password
         Password = "1234567890"
     };
     signature.Sign("sampleSigned.docx", options);
 }

See this article for more details.

Disclosure: I work as a developer evangelist at GroupDocs.

answered on Stack Overflow Sep 25, 2019 by Usman Aziz

User contributions licensed under CC BY-SA 3.0