XMP metadata support? XMP metadata support?

Blog Update: XMP extraction is natively supported by the Nuxeo Platform since the LTS 6.0 release.

Here comes the new question of the week: What about XMP metadata support?

Thanks to Søren Grønning and Bruce Grant for bringing this up.

To put it simply, we don't currently support XMP metadata, and don't plan to do so in the near future (Nuxeo 5.6). Not that we don't want to, but we just had many other things in our backlog ranking higher in terms of priority... Hopefully a native XMP support will come further down the road, but really if anyone wants to help and contribute, feel free to do so! The good news is that it's actually quite easy to customize Nuxeo. More than that, Nuxeo is made to be customized.

Here are some quick guidelines on how you could do it.

You'll have to find a way to store the information on the picture document type. You could define a new XMP facet with an associated XMP schema to hold all the XMP metadata. Using a facet is a good idea if you plan to add XMP information to different document types. Another option would be to use Nuxeo Studio to define a new document type.

How to extract the XMP metadata? Søren pointed out a nice GitHub project that extracts them. To plug this into the current image metadata system, you need to add a little contribution like this:

<extension target="org.nuxeo.ecm.platform.picture.core.libraryselector.LibrarySelectorService"
<MetadataUtils class="MyPackage.ExifToolUtil"

The ExifToolUtil class has to implement the MetadataUtils interface. With this, you can already fill in the metdata defined in the default picture document type.

The next step is to create a DocumentAdapter for the facet or document type you've previously defined. This will be used to fill in the metadata that are not available in the default picture type. It's just a class, an interface and a small XML contribution. Take a look at the existing contributions on the explorer.

Now you have everything you need to update XMP metadata when creating or updating a document.