public void SignTextPdf()
        {
            // Set request
            var testFile       = TestFiles.PdfStorage.FirstOrDefault();
            var fileInfo       = testFile.GetFileInfo();
            var signedFileName = $@"Output\PdfTextSigned.{testFile.Extension}";

            var options = new SignTextOptions();

            PopulateOptions(options);
            var signSettings = new SignSettings();

            signSettings.FileInfo    = fileInfo;
            signSettings.SaveOptions = new SaveOptions()
            {
                OutputFilePath = signedFileName
            };
            signSettings.Options = new List <SignOptions>()
            {
                options
            };
            var request = new CreateSignaturesRequest(signSettings);

            // Get and check result
            var response = SignatureApi.CreateSignatures(request);

            CheckResponse(response, testFile);

            //Download the signed file
            this.DownloadFile(signedFileName);
        }
        public void SignCollectionPdf()
        {
            // Set request
            var testFile       = TestFiles.PdfStorage.FirstOrDefault();
            var fileInfo       = testFile.GetFileInfo();
            var signedFileName = $@"Output\PdfCollectionSigned.{testFile.Extension}";

            var optionsBarcode = new SignBarcodeOptions();

            TestsSignBarcode.PopulateOptions(optionsBarcode);
            optionsBarcode.Top = 0;

            var optionsQrCode = new SignQRCodeOptions();

            TestsSignQrCode.PopulateOptions(optionsQrCode);
            optionsQrCode.Top = optionsBarcode.Height + 20;

            var optionsDigital = new SignDigitalOptions();

            TestsSignDigital.PopulateOptions(optionsDigital);
            optionsDigital.Top = optionsQrCode.Top + optionsQrCode.Height + 20;

            var optionsText = new SignTextOptions();

            TestsSignText.PopulateOptions(optionsText);
            optionsText.Top = optionsDigital.Top + optionsDigital.Height + 20;

            var optionsImage = new SignImageOptions();

            TestsSignImage.PopulateOptions(optionsImage);
            optionsImage.Top = optionsText.Top + optionsText.Height + 20;

            var optionsStamp = new SignStampOptions();

            TestsSignStamp.PopulateOptions(optionsStamp);
            optionsStamp.Top = optionsImage.Top + optionsImage.Height + 20;

            var signSettings = new SignSettings();

            signSettings.FileInfo    = fileInfo;
            signSettings.SaveOptions = new SaveOptions()
            {
                OutputFilePath = signedFileName
            };
            signSettings.Options = new List <SignOptions>()
            {
                optionsBarcode, optionsQrCode, optionsDigital, optionsText, optionsImage, optionsStamp
            };
            var request = new CreateSignaturesRequest(signSettings);

            // Get and check result
            var response = SignatureApi.CreateSignatures(request);

            CheckResponse(response, testFile);

            //Download the signed file
            this.DownloadFile(signedFileName);
        }
        public static void PopulateOptions(SignTextOptions options)
        {
            options.SignatureType = SignatureTypeEnum.Text;

            // set signature properties
            options.Text = "John Smith";

            // set signature position on a page
            options.Left   = 100;
            options.Top    = 100;
            options.Width  = 100;
            options.Height = 100;
            options.LocationMeasureType = SignTextOptions.LocationMeasureTypeEnum.Pixels;
            options.SizeMeasureType     = SignTextOptions.SizeMeasureTypeEnum.Pixels;
            options.Stretch             = SignTextOptions.StretchEnum.None;
            options.RotationAngle       = 0;
            options.HorizontalAlignment = SignTextOptions.HorizontalAlignmentEnum.None;
            options.VerticalAlignment   = SignTextOptions.VerticalAlignmentEnum.None;
            options.Margin = new Padding()
            {
                All = 5
            };
            options.MarginMeasureType = SignTextOptions.MarginMeasureTypeEnum.Pixels;

            // set signature appearance
            options.Font = new SignatureFont()
            {
                FontFamily = "Arial", FontSize = 12, Bold = true, Italic = false, Underline = false
            };
            options.ForeColor = new Color()
            {
                Web = "BlueViolet"
            };
            options.Border = new BorderLine
            {
                Color = new Color {
                    Web = "DarkOrange"
                },
                Visible = true,
                Style   = BorderLine.StyleEnum.Dash
            };
            options.BackgroundColor = new Color()
            {
                Web = "DarkOrange"
            };

            //set pages for signing (each of these page settings could be used singly)
            options.AllPages   = false;
            options.Page       = 1;
            options.PagesSetup = new PagesSetup()
            {
                EvenPages   = false,
                FirstPage   = true,
                LastPage    = false,
                OddPages    = false,
                PageNumbers = new List <int?>()
                {
                    1
                }
            };
        }
        protected internal string SignDocumentWithText(string rootPath,
                                                       string fileName,
                                                       string signatureText,
                                                       int pageNumber,
                                                       int left,
                                                       int top,
                                                       int width,
                                                       int height,
                                                       int signatureColumnNum, int signatureRowNum)
        {
            string storagePath = rootPath;
            string outputPath  = Path.Combine(rootPath, @"Output");
            string imagesPath  = Path.Combine(rootPath, @"Images");

            // set up a configuration
            SignatureConfig config = new SignatureConfig()
            {
                StoragePath = storagePath,
                OutputPath  = outputPath,
                ImagesPath  = imagesPath
            };

            // instantiating the handler
            SignatureHandler handler = new SignatureHandler(config);

            // Set a license if you have one
            _licensing.ApplyLicense();

            // setup PDF image signature options
            SignTextOptions signOptions       = null;
            string          fileNameExtension = Path.GetExtension(fileName).TrimStart('.');

            fileNameExtension = fileNameExtension.ToLower();
            int pageWidth = 0, pageHeight = 0;
            DocumentViewType fileType = GetDocumentType(fileNameExtension);

            switch (fileType)
            {
            case DocumentViewType.Pdf:
                signOptions = new PdfSignTextOptions(signatureText);
                break;

            case DocumentViewType.Words:
                signOptions = new WordsSignTextOptions(signatureText);
                break;

            case DocumentViewType.Cells:
                signOptions = new CellsSignTextOptions(signatureText)
                {
                    ColumnNumber = signatureColumnNum,
                    RowNumber    = signatureRowNum
                };
                break;

            case DocumentViewType.Slides:
                signOptions = new SlidesSignTextOptions(signatureText);
                break;
            }
            signOptions.DocumentPageNumber = pageNumber;
            signOptions.Left         = left;
            signOptions.Top          = top;
            signOptions.Width        = width;
            signOptions.Height       = height;
            signOptions.SignAllPages = false;

            GroupDocs.Signature.Options.SaveOptions saveOptions = new GroupDocs.Signature.Options.SaveOptions(OutputType.String);
            // sign the document
            string outputFilePath = handler.Sign <string>(fileName, signOptions, saveOptions);

            return(outputFilePath);
        }