GroupDocs.Metadata for .NET 18.6 Release Notes

Major Features

There are the following features and enhancements in this release:

  • Implement the ability to edit XMP metadata in WAV files
  • Implement the ability to update properties of the Microsoft Project format
  • Reduce memory consumption of MPP format metadata loading and saving
  • Reduce memory consumption of WAV format metadata loading and saving
  • Reduce memory consumption of AVI format metadata loading and saving

All Changes

KeySummaryCategory
METADATANET-2333Implement the ability to edit XMP metadata in WAV files New Feature  
METADATANET-1168 Implement the ability to update properties of the Microsoft Project format New Feature 
METADATANET-2334Reduce memory consumption of MPP format metadata loading and savingEnhancement  
METADATANET-2332Reduce memory consumption of WAV format metadata loading and savingEnhancement 
METADATANET-2297Reduce memory consumption of AVI format metadata loading and saving Enhancement 
METADATANET-2303TiffFormat.RemoveXmpData() turns Tiff Image into black Bug

Public API and Backward Incompatible Changes

Implement the ability to edit XMP metadata in WAV files 

Description

This feature allows a user to read and update XMP metadata in WAV files

Public API changes

The WavFormat class now implements the IXmp interface.

Usecases

Read and write XMP metadata.

using (WavFormat format = new WavFormat(@"D:\input.wav"))
{
    Console.WriteLine(format.XmpValues.Schemes.XmpBasic.CreateDate);
    Console.WriteLine(format.XmpValues.Schemes.XmpBasic.Label);
    Console.WriteLine(format.XmpValues.Schemes.DublinCore.Subject);
    Console.WriteLine(format.XmpValues.Schemes.DublinCore.Format);

    format.XmpValues.Schemes.XmpBasic.CreateDate = DateTime.Now;
    format.XmpValues.Schemes.XmpBasic.Label = "Test";
    format.XmpValues.Schemes.DublinCore.Subject = "WAV XMP Test";
    format.XmpValues.Schemes.DublinCore.Format = "WAV Audio";

    format.Save(@"D:\output.wav");
}

Remove XMP metadata.

using (WavFormat format = new WavFormat(@"D:\input.wav"))
{
    format.RemoveXmpData();
    format.Save(@"D:\output.wav");
}

Implement the ability to update properties of the Microsoft Project format

Description

This feature allows a user to update metadata properties of an MPP file.

Public API changes

The MppFormat.GetProperties method has been marked as obsolete.
A new ProjectInfo property has been added to the MppFormat class.

Usecases

Use public properties (methods in Java) of MppMetadata to update metadata values.

using (MppFormat format = new MppFormat(@"D:\input.mpp"))
{
    format.ProjectInfo.Author = "John Smith";
    format.ProjectInfo.Subject = "Test project";
    format.ProjectInfo.Category = "Software Development";

    format.Save(@"D:\output.mpp");
}

Clean metadata.

using (MppFormat format = new MppFormat(@"D:\input.mpp"))
{
    format.CleanMetadata();
    format.Save(@"D:\output.mpp");
}

Reduce memory consumption of MPP format metadata loading and saving

Description

This enhancement allows working with MPP files with less memory consumption.

Public API changes

None.

Usecases

Please note that the MppFormat class implements the IDisposable interface and it’s necessary to call the Dispose() method when you’re done working with its instance.

using (MppFormat format = new MppFormat(@"d:\input.mpp"))
{
    // Working with metadata
}

If you are loading an MPP file from a stream, it’s up to you to close the stream when the file is not needed anymore.

using (Stream stream = File.Open(@"d:\input.mpp", FileMode.Open, FileAccess.ReadWrite))
{
    using (MppFormat format = new MppFormat(stream))
    {
        // Working with metadata
    }
    // The stream is still open here
}

The same rule works if you are saving the output file into a stream.

using (Stream stream = File.Open(@"d:\output.mpp", FileMode.OpenOrCreate, FileAccess.ReadWrite))
{
    using (MppFormat format = new MppFormat(@"d:\input.mpp"))
    {
        // Working with metadata

        format.Save(stream);
    }
    // The stream is still open here
}

Reduce memory consumption of WAV format metadata loading and saving

Description

This enhancement allows working with WAV files with less memory consumption.

Public API changes

None.

Usecases

Please note that the WavFormat class implements the IDisposable interface and it’s necessary to call the Dispose() method when you’re done working with its instance.

using (WavFormat format = new WavFormat(@"d:\input.wav"))
{
    // Working with metadata
}

If you are loading a WAV file from a stream, it’s up to you to close the stream when the file is not needed anymore.

using (Stream stream = File.Open(@"d:\input.wav", FileMode.Open, FileAccess.ReadWrite))
{
    using (WavFormat format = new WavFormat(stream))
    {
        // Working with metadata
    }
    // The stream is still open here
}

The same rule works if you are saving the output file into a stream.

using (Stream stream = File.Open(@"d:\input.wav", FileMode.Open, FileAccess.ReadWrite))
using (Stream stream = File.Open(@"d:\output.wav", FileMode.OpenOrCreate, FileAccess.ReadWrite))
{
    using (WavFormat format = new WavFormat(@"d:\input.wav"))
    {
        // Working with metadata

        format.Save(stream);
    }
    // The stream is still open here
}

Reduce memory consumption of AVI format metadata loading and saving

Description

This enhancement allows working with AVI files with less memory consumption.

Public API changes

None.

Usecases

Please note that the AviFormat class implements the IDisposable interface and it’s necessary to call the Dispose() method when you’re done working with its instance.

using (AviFormat format = new AviFormat(@"d:\input.avi"))
{
    // Working with metadata
}

If you are loading an AVI file from a stream, it’s up to you to close the stream when the file is not needed anymore.

using (Stream stream = File.Open(@"d:\input.avi", FileMode.Open, FileAccess.ReadWrite))
{
    using (AviFormat format = new AviFormat(stream))
    {
        // Working with metadata
    }
    // The stream is still open here
}

The same rule works if you are saving the output file into a stream.

using (Stream stream = File.Open(@"d:\output.avi", FileMode.OpenOrCreate, FileAccess.ReadWrite))
{
    using (AviFormat format = new AviFormat(@"d:\input.avi"))
    {
        // Working with metadata

        format.Save(stream);
    }
    // The stream is still open here
}

TiffFormat.RemoveXmpData() turns Tiff Image into black 

Description

In earlier versions of API, after removing XMP data from Tiff image turns the image to black.

Public API changes

None.

Usecases

Remove XMP metadata.

// initialize TiffFormat
using (TiffFormat tiffFormat = new TiffFormat(@"D:\input.tif"))
{
    //remove Xmp Properties
    tiffFormat.RemoveXmpData();

    // commit changes and save output file
    tiffFormat.Save(@"D:\output.tif");
}