/// <summary> /// Search document for digital signature with applying specific options /// </summary> public static void Run() { Console.WriteLine("\n--------------------------------------------------------------------------------------------------------------------"); Console.WriteLine("[Example Advanced Usage] # SearchForDigitalAdvanced : Search document for digital signature with applying specific options\n"); // The path to the documents directory. string filePath = Constants.SAMPLE_PDF_SIGNED_DIGITAL; using (Signature signature = new Signature(filePath)) { DigitalSearchOptions options = new DigitalSearchOptions() { // specify special search criteria Comments = "Approved", // specify date range period of signature SignDateTimeFrom = new DateTime(year: 2020, month: 01, day: 01), SignDateTimeTo = new DateTime(year: 2020, month: 12, day: 31) }; // search for signatures in document List <DigitalSignature> signatures = signature.Search <DigitalSignature>(options); Console.WriteLine("\nSource document contains following signatures."); foreach (var digitalSignature in signatures) { Console.WriteLine("Digital signature found from {0} with validation flag {1}. Certificate SN {2}", digitalSignature.SignTime, digitalSignature.IsValid, digitalSignature.Certificate?.SerialNumber); } } }
/// <summary> /// Search document with exception handling /// </summary> public static void Run() { Console.WriteLine("\n--------------------------------------------------------------------------------------------------------------------"); Console.WriteLine("[Example Advanced Usage] # SearchWithExceptionHandling : Search document with exception handling\n"); // The path to the documents directory. string filePath = Constants.SAMPLE_PDF_SIGNED_PWD; try { // don't specify Password on protected document LoadOptions loadOptions = new LoadOptions(); using (Signature signature = new Signature(filePath)) { DigitalSearchOptions options = new DigitalSearchOptions() { }; // sign document to file List <DigitalSignature> signatures = signature.Search <DigitalSignature>(options); } } catch (GroupDocsSignatureException ex) { Console.WriteLine("GroupDocs Signature Exception: " + ex.Message); } catch (Exception ex) { Console.WriteLine("System Exception: " + ex.Message); } }
/// <summary> /// Search document for multiple signature types /// </summary> public static void Run() { Console.WriteLine("\n--------------------------------------------------------------------------------------------------------------------"); Console.WriteLine("[Example Basic Usage] # SearchForMultiple : Search document for multiple signature types \n"); // The path to the documents directory. string filePath = Constants.SAMPLE_SIGNED_MULTI; using (Signature signature = new Signature(filePath)) { // define few search options TextSearchOptions textOptions = new TextSearchOptions() { AllPages = true }; DigitalSearchOptions digitalOptions = new DigitalSearchOptions() { AllPages = true }; BarcodeSearchOptions barcodeOptions = new BarcodeSearchOptions() { AllPages = true, Text = "123456", MatchType = TextMatchType.Exact }; QrCodeSearchOptions qrCodeOptions = new QrCodeSearchOptions() { AllPages = true, Text = "John", MatchType = TextMatchType.Contains }; MetadataSearchOptions metadataOptions = new MetadataSearchOptions() { }; // add options to list List <SearchOptions> listOptions = new List <SearchOptions>(); listOptions.Add(textOptions); listOptions.Add(barcodeOptions); listOptions.Add(qrCodeOptions); listOptions.Add(metadataOptions); listOptions.Add(digitalOptions); // search for signatures in document SearchResult result = signature.Search(listOptions); if (result.Signatures.Count > 0) { Console.WriteLine($"\nSource document ['{filePath}'] contains following signatures."); foreach (var resSignature in result.Signatures) { Console.WriteLine($"Signature found at page {resSignature.PageNumber} with type {resSignature.SignatureType} and Id#: {resSignature.SignatureId}"); } } else { Helper.WriteError("No one signature was found."); } } }