/// <summary> /// Sign Image document with metadata signature with customer object and encryption /// </summary> public static void Run() { Console.WriteLine("\n--------------------------------------------------------------------------------------------------------------------"); Console.WriteLine("[Example Advanced Usage] # SignImageWithCustomMetadata : Sign Image document with metadata signature with customer object and encryption\n"); // The path to the documents directory. string filePath = Constants.SAMPLE_IMAGE; string fileName = Path.GetFileName(filePath); string outputFilePath = Path.Combine(Constants.OutputPath, "SignImageWithCustomMetadata", fileName); using (Signature signature = new Signature(filePath)) { // setup key and passphrase string key = "1234567890"; string salt = "1234567890"; // create data encryption IDataEncryption encryption = new SymmetricEncryption(SymmetricAlgorithmType.Rijndael, key, salt); // setup options with text of signature MetadataSignOptions options = new MetadataSignOptions(); // create custom object DocumentSignatureData documentSignature = new DocumentSignatureData() { ID = Guid.NewGuid().ToString(), Author = Environment.UserName, Signed = DateTime.Now, DataFactor = 11.22M }; // Specify different Metadata Signatures and add them to options signature collection ushort imgsMetadataId = 41996; // Specify different Metadata Signatures and add them to options signature collection // setup Author property ImageMetadataSignature mdDocument = new ImageMetadataSignature(imgsMetadataId++, documentSignature); // set encryption mdDocument.DataEncryption = encryption; // setup Author property ImageMetadataSignature mdAuthor = new ImageMetadataSignature(imgsMetadataId++, "Mr.Scherlock Holmes"); // set encryption mdAuthor.DataEncryption = encryption; // setup data of document id ImageMetadataSignature mdDocId = new ImageMetadataSignature(imgsMetadataId++, Guid.NewGuid().ToString()); // set encryption mdDocId.DataEncryption = encryption; // add signatures to options options.Signatures.Add(mdDocument); options.Signatures.Add(mdAuthor); options.Signatures.Add(mdDocId); // sign document to file SignResult signResult = signature.Sign(outputFilePath, options); Console.WriteLine($"\nSource document signed successfully with {signResult.Succeeded.Count} signature(s).\nFile saved at {outputFilePath}."); } }
/// <summary> /// Search document for encrypted QR-Code signature with applying specific options /// Please be aware that this example works only on licensed product due to limitation with QR-code processing /// </summary> public static void Run() { Console.WriteLine("\n--------------------------------------------------------------------------------------------------------------------"); Console.WriteLine("[Example Advanced Usage] # SearchForQRCodeEncryptedObject : Search document for encrypted QR-Code signature with applying specific options\n"); // The path to the documents directory. string filePath = Constants.SAMPLE_PDF_QRCODE_ENCRYPTED_OBJECT; using (Signature signature = new Signature(filePath)) { // setup key and pasphrase string key = "1234567890"; string salt = "1234567890"; // create data encryption IDataEncryption encryption = new SymmetricEncryption(SymmetricAlgorithmType.Rijndael, key, salt); QrCodeSearchOptions options = new QrCodeSearchOptions() { // specify special pages to search on AllPages = true, PageNumber = 1, PagesSetup = new PagesSetup() { FirstPage = true, LastPage = true, OddPages = false, EvenPages = false }, // specify special QRCode type to search EncodeType = QrCodeTypes.QR, // DataEncryption = encryption }; // search for signatures in document try { List <QrCodeSignature> signatures = signature.Search <QrCodeSignature>(options); Console.WriteLine("\nSource document contains following signatures."); foreach (var qrCodeSignature in signatures) { Console.WriteLine("QRCode signature found at page {0} with type {1}.", qrCodeSignature.PageNumber, qrCodeSignature.EncodeType); DocumentSignatureData documentSignatureData = qrCodeSignature.GetData <DocumentSignatureData>(); if (documentSignatureData != null) { Console.WriteLine("QRCode signature has DocumentSignatureData object:\n ID = {0}, Author = {1}, Signed = {2}, DataFactor {3}", documentSignatureData.ID, documentSignatureData.Author, documentSignatureData.Signed.ToShortDateString(), documentSignatureData.DataFactor); } } } catch { Helper.WriteError("\nThis example requires license to properly run. " + "\nVisit the GroupDocs site to obtain either a temporary or permanent license. " + "\nLearn more about licensing at https://purchase.groupdocs.com/faqs/licensing. " + "\nLear how to request temporary license at https://purchase.groupdocs.com/temporary-license."); } } }
/// <summary> /// Sign pdf document with metadata signature with customer object and encryption /// </summary> public static void Run() { Console.WriteLine("\n--------------------------------------------------------------------------------------------------------------------"); Console.WriteLine("[Example Advanced Usage] # SignWithMetadataEncryptedObject : Sign pdf document with metadata signature with customer object and encryption\n"); // The path to the documents directory. string filePath = Constants.SAMPLE_WORDPROCESSING; string outputFilePath = Path.Combine(Constants.OutputPath, "SignWithMetadataSecureCustom", "MetadataEncryptedObject.docx"); using (Signature signature = new Signature(filePath)) { // setup key and passphrase string key = "1234567890"; string salt = "1234567890"; // create data encryption IDataEncryption encryption = new SymmetricEncryption(SymmetricAlgorithmType.Rijndael, key, salt); // setup options with text of signature MetadataSignOptions options = new MetadataSignOptions() { // set encryption for all metadata signatures for this options // if you need separate encryption use own MetadataSignature.DataEncryption property DataEncryption = encryption }; // create custom object DocumentSignatureData documentSignatureData = new DocumentSignatureData() { ID = Guid.NewGuid().ToString(), Author = Environment.UserName, Signed = DateTime.Now, DataFactor = 11.22M }; // setup signature metadata WordProcessingMetadataSignature mdSignature = new WordProcessingMetadataSignature("Signature", documentSignatureData); // setup signature metadata WordProcessingMetadataSignature mdAuthor = new WordProcessingMetadataSignature("Author", "Mr.Scherlock Holmes"); // setup data of document id WordProcessingMetadataSignature mdDocId = new WordProcessingMetadataSignature("DocumentId", Guid.NewGuid().ToString()); // add signatures to options options.Signatures.Add(mdSignature); options.Signatures.Add(mdAuthor); options.Signatures.Add(mdDocId); // sign document to file SignResult signResult = signature.Sign(outputFilePath, options); Console.WriteLine($"\nSource document signed successfully with {signResult.Succeeded.Count} signature(s).\nFile saved at {outputFilePath}."); } }
/// <summary> /// Search document for metadata signature with applying specific options /// </summary> public static void Run() { Console.WriteLine("\n--------------------------------------------------------------------------------------------------------------------"); Console.WriteLine("[Example Advanced Usage] # SearchForMetadataEncryptedObject : Search document for metadata signature with applying specific options\n"); // The path to the documents directory. string filePath = Constants.SAMPLE_DOCX_METADATA_ENCRYPTED_OBJECT; using (Signature signature = new Signature(filePath)) { // setup key and passphrase string key = "1234567890"; string salt = "1234567890"; // create data encryption IDataEncryption encryption = new SymmetricEncryption(SymmetricAlgorithmType.Rijndael, key, salt); MetadataSearchOptions options = new MetadataSearchOptions() { DataEncryption = encryption }; // search for signatures in document List <WordProcessingMetadataSignature> signatures = signature.Search <WordProcessingMetadataSignature>(options); Console.WriteLine("\nSource document contains following signatures."); // get required metadata signatures WordProcessingMetadataSignature mdSignature = signatures.FirstOrDefault(p => p.Name == "Signature"); if (mdSignature != null) { DocumentSignatureData documentSignatureData = mdSignature.GetData <DocumentSignatureData>(); if (documentSignatureData != null) { Console.WriteLine("Signature has DocumentSignatureData object:\n ID = {0}, Author = {1}, Signed = {2}, DataFactor {3}", documentSignatureData.ID, documentSignatureData.Author, documentSignatureData.Signed.ToShortDateString(), documentSignatureData.DataFactor); } } // get required metadata signatures WordProcessingMetadataSignature mdAuthor = signatures.FirstOrDefault(p => p.Name == "Author"); if (mdAuthor != null) { Console.WriteLine("Metadata signature found. Name : {0}. Value: {1}", mdAuthor.Name, mdAuthor.GetData <string>()); } // get required metadata signatures WordProcessingMetadataSignature mdDocId = signatures.FirstOrDefault(p => p.Name == "DocumentId"); if (mdDocId != null) { Console.WriteLine("Metadata signature found. Name : {0}. Value: {1}", mdDocId.Name, mdDocId.GetData <string>()); } } }
/// <summary> /// Sign document with QR-Code signature applying specific options /// </summary> public static void Run() { // The path to the documents directory. string filePath = Constants.SAMPLE_PDF; string outputFilePath = Path.Combine(Constants.OutputPath, "SignWithQRCodeSecureCustom", "QRCodeEncryptedObject.pdf"); using (Signature signature = new Signature(filePath)) { // setup key and passphrase string key = "1234567890"; string salt = "1234567890"; // create data encryption IDataEncryption encryption = new SymmetricEncryption(SymmetricAlgorithmType.Rijndael, key, salt); // create custom object DocumentSignatureData documentSignatureData = new DocumentSignatureData() { ID = Guid.NewGuid().ToString(), Author = Environment.UserName, Signed = DateTime.Now, DataFactor = 11.22M }; // setup QR-Code options QrCodeSignOptions options = new QrCodeSignOptions() { // set custom object to serialize to QR Code Data = documentSignatureData, // QR-code type EncodeType = QrCodeTypes.QR, // specify serialization encryption DataEncryption = encryption, // locate and align signature Height = 100, Width = 100, VerticalAlignment = VerticalAlignment.Center, HorizontalAlignment = HorizontalAlignment.Left, Margin = new Padding() { Right = 10, Bottom = 10 } }; // sign document to file signature.Sign(outputFilePath, options); } Console.WriteLine("\nSource document signed successfully.\nFile saved at " + outputFilePath); }
/// <summary> /// Search document for QR-Code signature with applying specific options /// </summary> public static void Run() { Console.WriteLine("\n--------------------------------------------------------------------------------------------------------------------"); Console.WriteLine("[Example Advanced Usage] # SearchForQRCodeCustomSerializationObject : Search document for QR-Code signature with applying specific options\n"); // The path to the documents directory. string filePath = Constants.SAMPLE_PDF_QRCODE_CUSTOM_SERIALIZATION_OBJECT; using (Signature signature = new Signature(filePath)) { // create data encryption IDataEncryption encryption = new CustomXOREncryption(); QrCodeSearchOptions options = new QrCodeSearchOptions() { // specify special pages to search on AllPages = true, DataEncryption = encryption }; try { // search for signatures in document List <QrCodeSignature> signatures = signature.Search <QrCodeSignature>(options); Console.WriteLine("\nSource document contains following signatures:"); foreach (var qrCodeSignature in signatures) { Console.WriteLine("QRCode signature found at page {0} with type {1}.", qrCodeSignature.PageNumber, qrCodeSignature.EncodeType); DocumentSignatureData documentSignatureData = qrCodeSignature.GetData <DocumentSignatureData>(); if (documentSignatureData != null) { Console.WriteLine("QRCode signature has DocumentSignatureData object:\n ID = {0}, Author = {1}, Signed = {2}, DataFactor {3}", documentSignatureData.ID, documentSignatureData.Author, documentSignatureData.Signed.ToShortDateString(), documentSignatureData.DataFactor); } } } catch { Helper.WriteError("\nThis example requires license to properly run. " + "\nVisit the GroupDocs site to obtain either a temporary or permanent license. " + "\nLearn more about licensing at https://purchase.groupdocs.com/faqs/licensing. " + "\nLear how to request temporary license at https://purchase.groupdocs.com/temporary-license."); } } }