GroupDocs.Signature provides ability to search Metadata signatures and convert obtained values to various data types.
Here are the steps to search for Metadata signature and obtain required data type with GroupDocs.Signature:
Create new instance of Signature class and pass source document path or stream as a constructor parameter.
Create object of MetadataSearchOptions class. Adjust its properties if needed: set Name along with NameMatchType to keep only entries with matching names, or set IncludeBuiltinProperties to true to obtain built-in document properties as well (this flag makes sense for Word Processing, Spreadsheet and Presentation documents only).
Call proper conversion method to obtain corresponding Metadata value to required data type.
Search for electronic Metadata signature values with various data type
This example shows how to search for Metadata signature values with various data types.
using(Signaturesignature=newSignature("signed.pdf")){// set up search options: default options return all metadata signatures of the documentMetadataSearchOptionssearchOptions=newMetadataSearchOptions();// search for signatures in documentList<PdfMetadataSignature>signatures=signature.Search<PdfMetadataSignature>(searchOptions);// try to get each Pdf signature with proper data type added in Basic usage example SignPdfWithMetadataPdfMetadataSignaturemdSignature;// See example SignPdfWithMetadata with added various data type values to signaturestry{mdSignature=signatures.FirstOrDefault(p=>p.Name=="Author");Console.WriteLine($"\t[{mdSignature.Name}] as String = {mdSignature.ToString()}");mdSignature=signatures.FirstOrDefault(p=>p.Name=="CreatedOn");Console.WriteLine($"\t[{mdSignature.Name}] as DateTime = {mdSignature.ToDateTime().ToShortDateString()}");mdSignature=signatures.FirstOrDefault(p=>p.Name=="DocumentId");Console.WriteLine($"\t[{mdSignature.Name}] as Integer = {mdSignature.ToInteger()}");mdSignature=signatures.FirstOrDefault(p=>p.Name=="SignatureId");Console.WriteLine($"\t[{mdSignature.Name}] as Double = {mdSignature.ToDouble()}");mdSignature=signatures.FirstOrDefault(p=>p.Name=="Amount");Console.WriteLine($"\t[{mdSignature.Name}] as Decimal = {mdSignature.ToDecimal()}");mdSignature=signatures.FirstOrDefault(p=>p.Name=="Total");Console.WriteLine($"\t[{mdSignature.Name}] as Float = {mdSignature.ToSingle()}");}catch(Exceptionex){Console.WriteLine($"Error obtaining signature: {ex.Message}");}// narrow the search down to metadata signatures whose names end with "Id"MetadataSearchOptionsfilteredOptions=newMetadataSearchOptions{Name="Id",NameMatchType=TextMatchType.EndsWith};List<PdfMetadataSignature>filteredSignatures=signature.Search<PdfMetadataSignature>(filteredOptions);Console.WriteLine($"Found {filteredSignatures.Count} metadata signature(s) with name ending with 'Id'");}
Note
Metadata search is one part of the overall document metadata workflow. See the Work with document metadata page for the complete picture: adding metadata signatures, reading built-in properties, protecting values, and known limitations.
More resources
GitHub Examples
You may easily run the code above and see the feature in action in our GitHub examples: