Revision: 70679
Initial Code
Initial URL
Initial Description
Initial Title
Initial Tags
Initial Language
at June 8, 2016 20:35 by muhammadsabir
Initial Code
using System; using System.Collections.Generic; using System.Linq; using System.Text; using GroupDocs.Metadata.Formats; using GroupDocs.Metadata.Formats.Document; using GroupDocs.Metadata.Standards.Doc; using GroupDocs.Metadata.Tools; using System.IO; using GroupDocs.Metadata.MetadataProperties; namespace GroupDocs.Metadata.Examples.Utilities.CSharp { //ExStart:DocCleaner public class DocCleaner { // Absolute path to the GroupDocs.Metadata license file private const string LicensePath = @"GroupDocs.Metadata.lic"; // Absolute path to the documents directory public string DocumentsPath { get; set; } static DocCleaner() { /* set product license * uncomment following function if you have product license * */ //SetInternalLicense(); } public DocCleaner(string documentsPath) { // check if directory exists if (!Directory.Exists(Common.MapSourceFilePath( documentsPath))) { throw new DirectoryNotFoundException("Directory not found: " + documentsPath); } this.DocumentsPath = documentsPath; } /// <summary> /// Applies the product license /// </summary> private static void SetInternalLicense() { License license = new License(); license.SetLicense(LicensePath); } /// <summary> /// Takes author name and removes metadata in files created by specified author /// </summary> /// <param name="authorName">Author name</param> public void RemoveMetadataByAuthor(string authorName) { // Map directory in source folder string sourceDirectoryPath = Common.MapSourceFilePath(this.DocumentsPath); // get files presented in target directory string[] files = Directory.GetFiles(sourceDirectoryPath); foreach (string path in files) { // recognize format FormatBase format = FormatFactory.RecognizeFormat(path); // initialize DocFormat DocFormat docFormat = format as DocFormat; if (docFormat != null) { // get document properties DocMetadata properties = docFormat.DocumentProperties; // check if author is the same if (string.Equals(properties.Author, authorName, StringComparison.OrdinalIgnoreCase)) { // remove comments docFormat.ClearComments(); List<string> customKeys = new List<string>(); // find all custom keys foreach (KeyValuePair<string, PropertyValue> keyValuePair in properties) { if (!properties.IsBuiltIn(keyValuePair.Key)) { customKeys.Add(keyValuePair.Key); } } // and remove all of them foreach (string key in customKeys) { properties.Remove(key); } //====== yet to change things ========================= // and commit changes string fileName = Path.GetFileName(path); string outputFilePath = Common.MapDestinationFilePath(this.DocumentsPath + "/" + fileName); docFormat.Save(outputFilePath); //===================================================== } } } Console.WriteLine("Press any key to exit."); } } //ExEnd:DocCleaner }
Initial URL
https://github.com/groupdocs-metadata/GroupDocs.Metadata-for-.NET/blob/master/Examples/GroupDocs.Metadata.Examples.CSharp/Utilities/DocCleaner.cs
Initial Description
This source code uses public classes and interfaces exposed by GroupDocs.Metadata for .NET to clean metadata from the documents created by a particular author in some directory. Steps include: 1) Scan all documents from an author in a directory (input) 2) Clean metadata associated with the documents. 3) Save documents without metadata in a new directory (output)
Initial Title
Clean metadata from documents created by a particular author
Initial Tags
email, excel, api
Initial Language
C#