GroupDocsGists
10/19/2017 - 11:21 AM

GroupDocsMetadata.cs

using GroupDocs.Metadata.Formats.Document;
using GroupDocs.Metadata.Formats.Image;
using GroupDocs.Metadata.MetadataProperties;
using GroupDocs.Metadata.Standards.Doc;
using GroupDocs.Metadata.Standards.Exif.Jpeg;
using GroupDocs.Metadata.Tools.Comparison;
using GroupDocs.Metadata.Tools.Export;
using GroupDocs.Metadata.Tools.Search;
using GroupDocs.Metadata.Xmp;
using System;
using System.Collections.Generic;
using System.IO;
using System.Linq;
using System.Text;

namespace GroupDocs.Metadata
{
    class GroupDocsMetadata
    {
        /// <summary>
        /// Gets builtin document properties from Doc file 
        /// </summary> 
        public static void GetDocumentProperties()
        {
            try
            {
                // initialize DocFormat
                DocFormat docFormat = new DocFormat("input.doc");

                // initialize metadata
                DocMetadata docMetadata = docFormat.DocumentProperties;

                // get properties
                Console.WriteLine("Built-in Properties: ");
                foreach (KeyValuePair<string, PropertyValue> property in docMetadata)
                {
                    // check if built-in property
                    if (docMetadata.IsBuiltIn(property.Key))
                    {
                        Console.WriteLine("{0} : {1}", property.Key, property.Value);
                    }
                }
            }
            catch (Exception exp)
            {
                Console.WriteLine(exp.Message);
            }
        }

        /// <summary>
        /// Updates document properties of Doc file and creates output file
        /// </summary> 
        public static void UpdateDocumentProperties()
        {
            try
            {
                // initialize DocFormat
                DocFormat docFormat = new DocFormat("input.doc");

                // initialize DocMetadata
                DocMetadata docMetadata = docFormat.DocumentProperties;

                //update document property...
                docMetadata.Author = "Usman";
                docMetadata.Company = "Aspose";
                docMetadata.Manager = "Usman Aziz";

                //save output file...
                docFormat.Save("output.doc");

                Console.WriteLine("Updated Successfully.");

            }
            catch (Exception exp)
            {
                Console.WriteLine(exp.Message);
            }

        }

        /// <summary>
        /// Gets comments, merge fields and hidden fields of Doc file
        /// </summary> 
        public static void GetHiddenData()
        {
            try
            {
                // initialize DocFormat
                DocFormat docFormat = new DocFormat("input.doc");

                // inspect document
                InspectionResult inspectionResult = docFormat.InspectDocument();

                // display comments
                if (inspectionResult.Comments.Length > 0)
                {
                    Console.WriteLine("Comments in document:");
                    foreach (DocComment comment in inspectionResult.Comments)
                    {
                        Console.WriteLine("Comment: {0}", comment.Text);
                        Console.WriteLine("Author: {0}", comment.Author);
                        Console.WriteLine("Date: {0}", comment.CreatedDate);
                    }
                }

                // display merge fields
                if (inspectionResult.Fields.Length > 0)
                {
                    Console.WriteLine("\nMerge Fields in document:");
                    foreach (DocField field in inspectionResult.Fields)
                    {
                        Console.WriteLine(field.Name);
                    }
                }

                // display hidden fields 
                if (inspectionResult.HiddenText.Length > 0)
                {
                    Console.WriteLine("\nHiddent text in document:");
                    foreach (string word in inspectionResult.HiddenText)
                    {
                        Console.WriteLine(word);
                    }
                }

            }
            catch (Exception exp)
            {
                Console.WriteLine(exp.Message);
            }
        }

        /// <summary>
        ///Gets XMP properties from Jpeg file
        /// </summary> 
        public static void GetXMPProperties()
        {
            try
            {
                // initialize JpegFormat
                JpegFormat jpegFormat = new JpegFormat("input.jpeg");

                // get XMP data
                XmpProperties xmpProperties = jpegFormat.GetXmpProperties();

                // show XMP data
                foreach (string key in xmpProperties.Keys)
                {
                    try
                    {
                        XmpNodeView xmpNodeView = xmpProperties[key];
                        Console.WriteLine("[{0}] = {1}", xmpNodeView.Name, xmpNodeView.Value);
                    }
                    catch { }
                }
            }
            catch (Exception exp)
            {
                Console.WriteLine(exp.Message);
            }
        }

        /// <summary>
        /// Gets Exif info from Jpeg file
        /// </summary> 
        public static void GetExifInfo()
        {
            try
            {
                // initialize JpegFormat
                JpegFormat jpegFormat = new JpegFormat("input.jpeg");

                // get EXIF data
                JpegExifInfo exif = (JpegExifInfo)jpegFormat.GetExifInfo();

                if (exif != null)
                {
                    // get artist 
                    Console.WriteLine("Artist: {0}", exif.Artist);
                    // get description 
                    Console.WriteLine("Description: {0}", exif.ImageDescription);
                    // get user's comment 
                    Console.WriteLine("User Comment: {0}", exif.UserComment);
                    // get user's Model 
                    Console.WriteLine("Model: {0}", exif.Model);
                    // get user's Make 
                    Console.WriteLine("Make: {0}", exif.Make);
                    // get user's CameraOwnerName 
                    Console.WriteLine("CameraOwnerName: {0}", exif.CameraOwnerName);
                    // get longitude
                    Console.WriteLine("Longitude: {0}", exif.GPSData.Longitude[0].ToString());
                    // get latitude
                    Console.WriteLine("Latitude: {0}", exif.GPSData.Latitude[0].ToString());
                }
            }
            catch (Exception exp)
            {
                Console.WriteLine(exp.Message);
            }
        }

        /// <summary>
        /// Compares metadata of two documents and displays result 
        /// </summary> 
        public static void CompareDocument()
        {
            try
            {
                string firstDocument = "first.doc";
                string secondDocument = "second.doc";

                MetadataPropertyCollection differences = ComparisonFacade.CompareDocuments(firstDocument, secondDocument, ComparerSearchType.Difference);

                foreach (MetadataProperty property in differences)
                {
                    Console.WriteLine("{0} : {1}", property.Name, property.Value);
                }
            }
            catch (Exception exp)
            {
                Console.WriteLine("Exception occurred: " + exp.Message);
            }

        }

        /// <summary>
        /// Searches metadata in document 
        /// </summary> 
        public static void SearchMetadata()
        {
            try
            {
                string filePath = "input.doc";

                MetadataPropertyCollection properties = SearchFacade.ScanDocument(filePath, "Author", SearchCondition.Contains);

                foreach (MetadataProperty property in properties)
                {
                    Console.WriteLine("{0} : {1}", property.Name, property.Value);
                }
            }
            catch (Exception exp)
            {
                Console.WriteLine("Exception occurred: " + exp.Message);
            }

        }

        /// <summary>
        /// Exports metadata of specified file into Excel file 
        /// </summary> 
        public static void ExportMetadata()
        {
            try
            {
                string filePath = "input.doc";
                 
                // path to the output file
                string outputPath = "metadata.xlsx";

                // export to excel
                byte[] content = ExportFacade.ExportToExcel(filePath);

                // write data to the file
                File.WriteAllBytes(outputPath, content);

            }
            catch (Exception exp)
            {
                Console.WriteLine("Exception occurred: " + exp.Message);
            }

        }
    }
}