/// <summary> /// Delete Barcode signature from the document /// </summary> public static void Run() { Console.WriteLine("\n--------------------------------------------------------------------------------------------------------------------"); Console.WriteLine("[Example Basic Usage] # DeleteBarcode : Delete Barcode signature from the document \n"); // The path to the documents directory. string filePath = Constants.SAMPLE_SIGNED_MULTI; string fileName = Path.GetFileName(filePath); // copy source file since Delete method works with same Document string outputFilePath = Path.Combine(Constants.OutputPath, "DeleteBarcode", fileName); Constants.CheckDir(outputFilePath); File.Copy(filePath, outputFilePath, true); using (Signature signature = new Signature(outputFilePath)) { BarcodeSearchOptions options = new BarcodeSearchOptions(); // search for Barcode signatures in document List<BarcodeSignature> signatures = signature.Search<BarcodeSignature>(options); if (signatures.Count > 0) { BarcodeSignature barcodeSignature = signatures[0]; bool result = signature.Delete(barcodeSignature); if (result) { Console.WriteLine($"Signature with Barcode '{barcodeSignature.Text}' and encode type '{barcodeSignature.EncodeType.TypeName}' was deleted from document ['{fileName}']."); } else { Helper.WriteError($"Signature was not deleted from the document! Signature with Barcode '{barcodeSignature.Text}' and encode type '{barcodeSignature.EncodeType.TypeName}' was not found!"); } } } }
/// <summary> /// Delete multiple signatures from the document /// </summary> public static void Run() { Console.WriteLine("\n--------------------------------------------------------------------------------------------------------------------"); Console.WriteLine("[Example Basic Usage] # DeleteMultiple : Delete multiple signatures from the document \n"); // The path to the documents directory. string filePath = Constants.SAMPLE_SIGNED_MULTI; string fileName = Path.GetFileName(filePath); // copy source file since Delete method works with same Document string outputFilePath = Path.Combine(Constants.OutputPath, "DeleteMultiple", fileName); Constants.CheckDir(outputFilePath); File.Copy(filePath, outputFilePath, true); // processing signatures using (Signature signature = new Signature(outputFilePath)) { // define few search options TextSearchOptions textSearchOptions = new TextSearchOptions(); ImageSearchOptions imageSearchOptions = new ImageSearchOptions(); BarcodeSearchOptions barcodeOptions = new BarcodeSearchOptions(); QrCodeSearchOptions qrCodeOptions = new QrCodeSearchOptions(); // add options to list List <SearchOptions> listOptions = new List <SearchOptions>(); listOptions.Add(textSearchOptions); listOptions.Add(imageSearchOptions); listOptions.Add(barcodeOptions); listOptions.Add(qrCodeOptions); // search for signatures in document SearchResult result = signature.Search(listOptions); if (result.Signatures.Count > 0) { Console.WriteLine("\nTrying to delete all signatures..."); DeleteResult deleteResult = signature.Delete(result.Signatures); if (deleteResult.Succeeded.Count == result.Signatures.Count) { Console.WriteLine("\nAll signatures were successfully deleted!"); } else { Console.WriteLine($"Successfully deleted signatures : {deleteResult.Succeeded.Count}"); Helper.WriteError($"Not deleted signatures : {deleteResult.Failed.Count}"); } Console.WriteLine("\nList of deleted signatures:"); int number = 1; foreach (BaseSignature temp in deleteResult.Succeeded) { Console.WriteLine($"Signature #{number++}: Type: {temp.SignatureType} Id:{temp.SignatureId}, Location: {temp.Left}x{temp.Top}. Size: {temp.Width}x{temp.Height}"); } } else { Helper.WriteError("No one signature was found."); } } }
/// <summary> /// Delete Barcode signature from the document. /// </summary> public static void Run() { Console.WriteLine("\n--------------------------------------------------------------------------------------------------------------------"); Console.WriteLine("[Example Advanced Usage] # DeleteBarcodeAfterSearch : Delete Barcode signature from the document\n"); // The path to the documents directory. string filePath = Constants.SAMPLE_SIGNED_MULTI; // copy source file since Delete method works with same Document string fileName = Path.GetFileName(filePath); string outputFilePath = Path.Combine(Constants.OutputPath, "DeleteBarcodeAfterSearch", fileName); Constants.CheckDir(outputFilePath); File.Copy(filePath, outputFilePath, true); // initialize Signature instance using (Signature signature = new Signature(outputFilePath)) { BarcodeSearchOptions options = new BarcodeSearchOptions(); List <BarcodeSignature> signatures = signature.Search <BarcodeSignature>(options); List <BaseSignature> signaturesToDelete = new List <BaseSignature>(); // collect signatures to delete foreach (BarcodeSignature temp in signatures) { if (temp.Text.Contains("12345")) { signaturesToDelete.Add(temp); } } // delete signatures DeleteResult deleteResult = signature.Delete(signaturesToDelete); if (deleteResult.Succeeded.Count == signaturesToDelete.Count) { Console.WriteLine("All signatures were successfully deleted!"); } else { Console.WriteLine($"Successfully deleted signatures : {deleteResult.Succeeded.Count}"); Helper.WriteError($"Not deleted signatures : {deleteResult.Failed.Count}"); } Console.WriteLine("List of deleted signatures:"); foreach (BaseSignature temp in deleteResult.Succeeded) { Console.WriteLine($"Signature# Id:{temp.SignatureId}, Location: {temp.Left}x{temp.Top}. Size: {temp.Width}x{temp.Height}"); } } }
/// <summary> /// Update Barcode signature from the document. /// Update method supports changing Barcode location and size. /// </summary> public static void Run() { Console.WriteLine("\n--------------------------------------------------------------------------------------------------------------------"); Console.WriteLine("[Example Advanced Usage] # UpdateBarcodeAfterSearch : Update Barcode signature from the document\n"); // The path to the documents directory. string filePath = Constants.SAMPLE_SIGNED_MULTI; // copy source file since Update method works with same Document string fileName = Path.GetFileName(filePath); string outputFilePath = Path.Combine(Constants.OutputPath, "UpdateBarcodeAfterSearch", fileName); Constants.CheckDir(outputFilePath); File.Copy(filePath, outputFilePath, true); // initialize Signature instance using (Signature signature = new Signature(outputFilePath)) { BarcodeSearchOptions options = new BarcodeSearchOptions(); List <BarcodeSignature> signatures = signature.Search <BarcodeSignature>(options); // adjust signature properties foreach (BarcodeSignature temp in signatures) { // apply some condition to adjust signature properties temp.Left = temp.Left + 100; temp.Top = temp.Top + 100; temp.IsSignature = true; } // update all found signatures UpdateResult updateResult = signature.Update(signatures.ConvertAll(p => (BaseSignature)p)); if (updateResult.Succeeded.Count == signatures.Count) { Console.WriteLine("\nAll signatures were successfully updated!"); } else { Console.WriteLine($"Successfully updated signatures : {updateResult.Succeeded.Count}"); Helper.WriteError($"Not updated signatures : {updateResult.Failed.Count}"); } Console.WriteLine("List of updated signatures:"); foreach (BaseSignature temp in updateResult.Succeeded) { Console.WriteLine($"Signature# Id:{temp.SignatureId}, Location: {temp.Left}x{temp.Top}. Size: {temp.Width}x{temp.Height}"); } } }
/// <summary> /// Update Barcode signature from the document. /// Update method supports changing Barcode location and size. /// </summary> public static void Run() { Console.WriteLine("\n--------------------------------------------------------------------------------------------------------------------"); Console.WriteLine("[Example Basic Usage] # UpdateBarcode : Update Barcode signature from the document \n"); // The path to the documents directory. string filePath = Constants.SAMPLE_SIGNED_MULTI; // copy source file since Update method works with same Document string fileName = Path.GetFileName(filePath); string outputFilePath = Path.Combine(Constants.OutputPath, "UpdateBarcode", fileName); Constants.CheckDir(outputFilePath); File.Copy(filePath, outputFilePath, true); // initialize Signature instance using (Signature signature = new Signature(outputFilePath)) { BarcodeSearchOptions options = new BarcodeSearchOptions() { Text = "12345", MatchType = TextMatchType.Contains }; List <BarcodeSignature> signatures = signature.Search <BarcodeSignature>(options); if (signatures.Count > 0) { BarcodeSignature barcodeSignature = signatures[0]; // change position barcodeSignature.Left = 100; barcodeSignature.Top = 100; // change size. Please note not all documents support changing signature size barcodeSignature.Width = 400; barcodeSignature.Height = 100; bool result = signature.Update(barcodeSignature); if (result) { Console.WriteLine($"Signature with Barcode '{barcodeSignature.Text}' and encode type '{barcodeSignature.EncodeType.TypeName}' was updated in the document ['{fileName}']."); } else { Helper.WriteError($"Signature was not updated in the document! Signature with Barcode '{barcodeSignature.Text}' and encode type '{barcodeSignature.EncodeType.TypeName}' was not found!"); } } } }
/// <summary> /// Search document for barcode signatures and subscribe for events /// </summary> public static void Run() { Console.WriteLine("\n--------------------------------------------------------------------------------------------------------------------"); Console.WriteLine("[Example Advanced Usage] # SubscribeSearchEvents : Search document for barcode signatures and subscribe for events\n"); // The path to the documents directory. string filePath = Constants.SAMPLE_SIGNED_MULTI; using (Signature signature = new Signature(filePath)) { signature.SearchStarted += OnSearchStarted; signature.SearchProgress += OnSearchProgress; signature.SearchCompleted += OnSearchCompleted; BarcodeSearchOptions options = new BarcodeSearchOptions() { // specify special pages to search on AllPages = false, PageNumber = 1, PagesSetup = new PagesSetup() { FirstPage = true, LastPage = true, OddPages = false, EvenPages = false }, // specify text match type MatchType = TextMatchType.Contains, // specify text pattern to search Text = "12345" }; // search for signatures in document List <BarcodeSignature> signatures = signature.Search <BarcodeSignature>(options); Console.WriteLine("\nSource document contains following signatures."); foreach (var barcodeSignature in signatures) { Console.WriteLine("Barcode signature found at page {0} with type {1} and text {2}", barcodeSignature.PageNumber, barcodeSignature.EncodeType, barcodeSignature.Text); } } }
/// <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."); } } }
/// <summary> /// Search document for Barcode signature with applying specific options /// Please be aware that this example works only on licensed product due to limitation with Barcode processing /// </summary> public static void Run() { Console.WriteLine("\n--------------------------------------------------------------------------------------------------------------------"); Console.WriteLine("[Example Advanced Usage] # SearchForBarcodeAdvanced : Search document for Barcode signature with applying specific options\n"); // The path to the documents directory. string filePath = Constants.SAMPLE_SIGNED_MULTI; using (Signature signature = new Signature(filePath)) { BarcodeSearchOptions options = new BarcodeSearchOptions() { // specify special pages to search on AllPages = false, // single page number PageNumber = 1, // setup extended search in pages setup PagesSetup = new PagesSetup() { FirstPage = true, LastPage = true, OddPages = false, EvenPages = false }, // specify special barcode type to search EncodeType = BarcodeTypes.Code128, // specify text match type MatchType = TextMatchType.Contains, // specify text pattern to search Text = "12345", // set field for barcode images returning ReturnContent = true, // specify type of returned barcode images ReturnContentType = FileType.PNG }; // search for signatures in document List <BarcodeSignature> signatures = signature.Search <BarcodeSignature>(options); Console.WriteLine("\nSource document contains following Barcode signatures:"); foreach (var bcSignature in signatures) { Console.WriteLine($"\t #{bcSignature.SignatureId} at {bcSignature.PageNumber}-page, {bcSignature.EncodeType.TypeName} type, Text = '{bcSignature.Text}', created {bcSignature.CreatedOn.ToShortDateString()}, modified {bcSignature.ModifiedOn.ToShortDateString()}"); } //Save Barcode images string outputPath = Path.Combine(Constants.OutputPath, "SearchForBarcodeAdvanced"); if (!Directory.Exists(outputPath)) { Directory.CreateDirectory(outputPath); } int i = 0; foreach (BarcodeSignature barcodeSignature in signatures) { if (barcodeSignature.Content != null) { string outputFilePath = Path.Combine(outputPath, $"image{i}{barcodeSignature.Format?.Extension}"); using (FileStream fs = new FileStream(outputFilePath, FileMode.Create)) { fs.Write(barcodeSignature.Content, 0, barcodeSignature.Content.Length); } } i++; } } }
/// <summary> /// Following example shows how to process Barcode Signature over all signature life-cycle. /// First document is being signed with Barcode Signature, then verified for it, searched for same, updating and finally deleting this signature. /// Please be aware that this example works only on licensed product due to limitation with Barcode processing /// </summary> public static void Run() { Console.WriteLine("\n--------------------------------------------------------------------------------------------------------------------"); Console.WriteLine("[Example Advanced Usage] # ProcessingBarcodeSignatureOverCRUD : Process Barcode Signature over all signature life-cycle\n"); // The path to the documents directory. string filePath = Constants.SAMPLE_WORDPROCESSING; string fileName = Path.GetFileName(filePath); string outputFilePath = Path.Combine(Constants.OutputPath, "ProcessingBarcodeSignatureOverCRUD", fileName); List <string> signatureIds = new List <string>(); // ----------------------------------------------------------------------------------------------------------------------------- // STEP 1. Sign document with Barcode Signature // ----------------------------------------------------------------------------------------------------------------------------- string bcText = "John Smith"; using (Signature signature = new Signature(filePath)) { BarcodeSignOptions signOptions = new BarcodeSignOptions(bcText, BarcodeTypes.Code128) { VerticalAlignment = VerticalAlignment.Top, HorizontalAlignment = HorizontalAlignment.Center, Width = 100, Height = 40, Margin = new Padding(20), // set barcode color and Font ForeColor = Color.Red, Font = new SignatureFont { Size = 12, FamilyName = "Comic Sans MS" } }; // sign document to file SignResult signResult = signature.Sign(outputFilePath, signOptions); Console.WriteLine("\nDocument {filePath} was signed with following signatures:"); foreach (BaseSignature temp in signResult.Succeeded) { // collect newly created signature' Id signatureIds.Add(temp.SignatureId); Console.WriteLine($"Signature : {temp.SignatureType} Id:{temp.SignatureId}, Location: {temp.Left}x{temp.Top}. Size: {temp.Width}x{temp.Height}"); } } // ----------------------------------------------------------------------------------------------------------------------------- // STEP 2. Verify document for Barcode Signature // ----------------------------------------------------------------------------------------------------------------------------- using (Signature signature = new Signature(outputFilePath)) { BarcodeVerifyOptions verifyOptions = new BarcodeVerifyOptions() { // specify if all pages should be verified AllPages = false, PageNumber = 1, // barcode type EncodeType = BarcodeTypes.Code128, // Text = bcText }; // verify document signatures VerificationResult verifyResult = signature.Verify(verifyOptions); if (verifyResult.IsValid) { Console.WriteLine("\nDocument was verified successfully!"); } else { Helper.WriteError("\nDocument failed verification process."); } // ----------------------------------------------------------------------------------------------------------------------------- // STEP 3. Search document for Barcode Signature // ----------------------------------------------------------------------------------------------------------------------------- BarcodeSearchOptions searchOptions = new BarcodeSearchOptions() { // specify special pages to search on AllPages = true }; // search for barcode signatures in document List <BarcodeSignature> signatures = signature.Search <BarcodeSignature>(searchOptions); Console.WriteLine("\nSource document contains following Barcode signature(s)."); // enumerate all signature for output foreach (BarcodeSignature bcSignature in signatures) { if (bcSignature != null) { Console.WriteLine($"Found Barcode signature at page {bcSignature.PageNumber} with type [{bcSignature.EncodeType.TypeName}] and Barcode Text '{bcSignature.Text}'."); Console.WriteLine($"Location at {bcSignature.Left}-{bcSignature.Top}. Size is {bcSignature.Width}x{bcSignature.Height}."); } } // ----------------------------------------------------------------------------------------------------------------------------- // STEP 4. Update document Barcode Signature after searching it // ----------------------------------------------------------------------------------------------------------------------------- foreach (BarcodeSignature bcSignature in signatures) { // change position bcSignature.Left = bcSignature.Left + 100; bcSignature.Top = bcSignature.Top + 100; // change size. Please note not all documents support changing signature size bcSignature.Width = 200; bcSignature.Height = 50; } List <BaseSignature> signaturesToUpdate = signatures.ConvertAll(p => (BaseSignature)p); UpdateResult updateResult; updateResult = signature.Update(signaturesToUpdate); if (updateResult.Succeeded.Count == signatures.Count) { Console.WriteLine("\nAll signatures were successfully updated!"); } else { Console.WriteLine($"Successfully updated signatures : {updateResult.Succeeded.Count}"); Helper.WriteError($"Not updated signatures : {updateResult.Failed.Count}"); } Console.WriteLine("List of updated signatures:"); foreach (BaseSignature temp in updateResult.Succeeded) { Console.WriteLine($"Signature# Id:{temp.SignatureId}, Location: {temp.Left}x{temp.Top}. Size: {temp.Width}x{temp.Height}"); } // ----------------------------------------------------------------------------------------------------------------------------- // STEP 5. Update document Barcode Signature on saved SignatureId // create list of Barcode Signature by known SignatureId // ----------------------------------------------------------------------------------------------------------------------------- signaturesToUpdate.Clear(); foreach (var item in signatureIds) { BarcodeSignature temp = new BarcodeSignature(item) { Width = 150, Height = 30, Left = 100, Top = 100 }; signaturesToUpdate.Add(temp); } // update all found signatures updateResult = signature.Update(signaturesToUpdate); if (updateResult.Succeeded.Count == signatures.Count) { Console.WriteLine("\nAll signatures were successfully updated!"); } else { Console.WriteLine($"Successfully updated signatures : {updateResult.Succeeded.Count}"); Helper.WriteError($"Not updated signatures : {updateResult.Failed.Count}"); } Console.WriteLine("List of updated signatures:"); foreach (BaseSignature temp in updateResult.Succeeded) { Console.WriteLine($"Signature# Id:{temp.SignatureId}, Location: {temp.Left}x{temp.Top}. Size: {temp.Width}x{temp.Height}"); } // ----------------------------------------------------------------------------------------------------------------------------- // STEP 6. Delete document barcode Signature by id // create list of Barcode Signature by known SignatureId signaturesToUpdate.Clear(); foreach (var item in signatureIds) { BarcodeSignature temp = new BarcodeSignature(item); signaturesToUpdate.Add(temp); } // delete all signatures DeleteResult deleteResult = signature.Delete(signaturesToUpdate); if (deleteResult.Succeeded.Count == signaturesToUpdate.Count) { Console.WriteLine("\nAll signatures were successfully deleted!"); } else { Console.WriteLine($"Successfully deleted signatures : {deleteResult.Succeeded.Count}"); Helper.WriteError($"Not deleted signatures : {deleteResult.Failed.Count}"); } Console.WriteLine("List of deleted signatures:"); foreach (BaseSignature temp in deleteResult.Succeeded) { Console.WriteLine($"Signature# Id:{temp.SignatureId}, Location: {temp.Left}x{temp.Top}. Size: {temp.Width}x{temp.Height}"); } } }