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);
}
}
}
}