Set Metadata Properties

Update or add metadata properties satisfying a predicate

The SetProperties is used to update or add metadata. You can easily add metadata to photos, pdfs or you can update or add data to mp3 files. This code sample actually combines two operations: add and update. If an existing property satisfies the specified predicate its value is updated. If there is a known property missing in a metadata package that satisfies the predicate it is added to the appropriate package.

The code snippet below demonstrates a basic usage scenario of the SetProperties method.

  1. Open a document
  2. Specify a predicate that will be used to add/update metadata properties
  3. Specify a value you would like to add to existing metadata packages in the file
  4. Check the actual number of added/updated properties
  5. Save the changes

Example

// Constants.InputVsdx is an absolute or relative path to your document. Ex: @"C:\Docs\source.vsdx"
using (Metadata metadata = new Metadata(Constants.InputVsdx))
{
// Set the value of each property that satisfies the predicate:
// property contains the date/time the document was created OR modified
var affected = metadata.SetProperties(
p => p.Tags.Contains(Tags.Time.Created) || p.Tags.Contains(Tags.Time.Modified),
new PropertyValue(DateTime.Now));
Console.WriteLine("Properties set: {0}", affected);
metadata.Save(Constants.OutputVsdx);
}
view raw set-metadata.cs hosted with ❤ by GitHub

As a result, we update all existing metadata properties containing the date the document was created/updated. If a metadata package doesn’t contain such properties but they are meant to be in its structure they are added.