GroupDocs.Metadata for .NET 20.5 Release Notes

Major Features

There are the following features, enhancements and fixes in this release:

  • Remove obsolete API (Legacy namespace)
  • Implement the ability to work with EXIF metadata in WEBP images
  • Implement the ability to work with XMP metadata in MOV files

Full List of Issues Covering all Changes in this Release

KeySummaryCategory
METADATANET-3293Remove obsolete API (Legacy namespace)Improvement
METADATANET-2851Implement the ability to work with EXIF metadata in WEBP imagesNew Feature
METADATANET-2854Implement the ability to work with XMP metadata in MOV filesNew Feature
METADATANET-3177An exception is thrown when trying to extract PDF propertiesBug
METADATANET-3270Operation is not valid due to the current state of the objectBug
METADATANET-3273Could not parse RDF descriptionBug
METADATANET-3276“Could not unzip EPUB stream” exception when reading EPUB fileBug
METADATANET-3278“Date has invalid format:7/24/2003 16:17:18” exception when reading PDFBug
METADATANET-3279Invalid data descriptor header exception is thrown when reading ZIP fileBug
METADATANET-3282“Invalid Epub package” exception when reading EPUB fileBug
METADATANET-3285An exception is thrown when trying to loading WebP fileBug
METADATANET-3290Exception is thrown when loading EPUB fileBug

Public API and Backward Incompatible Changes

Remove obsolete API (Legacy namespace)

All types from the GroupDocs.Metadata.Legacy namespace were removed**.**

Public API changes

All types from the GroupDocs.Metadata.Legacy namespace were removed

Use cases

See the migration notes for brief comparison of the old and new API

Implement the ability to work with EXIF metadata in WEBP images

This new feature allows the user to read, update and remove EXIF metadata in WEBP images.

Public API changes

The ExifPackage property has been added to the WebPRootPackage class

The WebPRootPackage class now implements the IExif interface

Use cases

Read EXIF metadata properties in a WEBP image

using (Metadata metadata = new Metadata(@"D:\exif.webp"))
{
	IExif root = metadata.GetRootPackage() as IExif;
	if (root != null && root.ExifPackage != null)
	{
		Console.WriteLine(root.ExifPackage.Artist);
		Console.WriteLine(root.ExifPackage.Copyright);
		Console.WriteLine(root.ExifPackage.ImageDescription);
		Console.WriteLine(root.ExifPackage.Make);
		Console.WriteLine(root.ExifPackage.Model);
		Console.WriteLine(root.ExifPackage.Software);
		Console.WriteLine(root.ExifPackage.ImageWidth);
		Console.WriteLine(root.ExifPackage.ImageLength);
		// ...
		Console.WriteLine(root.ExifPackage.ExifIfdPackage.BodySerialNumber);
		Console.WriteLine(root.ExifPackage.ExifIfdPackage.CameraOwnerName);
		Console.WriteLine(root.ExifPackage.ExifIfdPackage.UserComment);
		// ...
		Console.WriteLine(root.ExifPackage.GpsPackage.Altitude);
		Console.WriteLine(root.ExifPackage.GpsPackage.LatitudeRef);
		Console.WriteLine(root.ExifPackage.GpsPackage.LongitudeRef);
		// ...
	}
}

Implement the ability to work with XMP metadata in MOV files

This new feature allows the user to read, update and remove XMP metadata in MOV video files.

Public API changes

The XmpPackage property has been added to the MovRootPackage class

The MovRootPackage class now implements the IXmp interface

Use cases

Read XMP metadata properties in a MOV video

using (Metadata metadata = new Metadata(@"D:\xmp.mov"))
{
	IXmp root = metadata.GetRootPackage() as IXmp;
	if (root != null && root.XmpPackage != null)
	{
		if (root.XmpPackage.Schemes.XmpBasic != null)
		{
			Console.WriteLine(root.XmpPackage.Schemes.XmpBasic.CreatorTool);
			Console.WriteLine(root.XmpPackage.Schemes.XmpBasic.CreateDate);
			Console.WriteLine(root.XmpPackage.Schemes.XmpBasic.ModifyDate);
			Console.WriteLine(root.XmpPackage.Schemes.XmpBasic.Label);
			Console.WriteLine(root.XmpPackage.Schemes.XmpBasic.Nickname);

			// ...
		}
		if (root.XmpPackage.Schemes.DublinCore != null)
		{
			Console.WriteLine(root.XmpPackage.Schemes.DublinCore.Format);
			Console.WriteLine(root.XmpPackage.Schemes.DublinCore.Coverage);
			Console.WriteLine(root.XmpPackage.Schemes.DublinCore.Identifier);
			Console.WriteLine(root.XmpPackage.Schemes.DublinCore.Source);

			// ...
		}
		if (root.XmpPackage.Schemes.Photoshop != null)
		{
			Console.WriteLine(root.XmpPackage.Schemes.Photoshop.ColorMode);
			Console.WriteLine(root.XmpPackage.Schemes.Photoshop.IccProfile);
			Console.WriteLine(root.XmpPackage.Schemes.Photoshop.Country);
			Console.WriteLine(root.XmpPackage.Schemes.Photoshop.City);
			Console.WriteLine(root.XmpPackage.Schemes.Photoshop.DateCreated);

			// ... 
		}

		// ...
	}
}