We’re pleased to announce the release of GroupDocs.Metadata for Java 26.11, available as of November 2026. This release reads metadata from eight more formats — five archive formats, OGG Vorbis audio and FB2 and MOBI e-books — and can load a document straight from a URI. Email support grows considerably: MSG files expose about 30 more MAPI properties, several existing ones become editable, and EML attachments can be edited. Metadata.sanitize() now removes much more from PDF documents, and a set of fixes improves CAD previews and file type detection.

What’s new in this release

Key Summary Category
METADATANET-4251 Support GZIP, BZ2, XZ and Zstandard archive formats Feature
— Support the Apple Archive (AAR) format Feature
METADATANET-4083 Support the OGG (Vorbis) audio format Feature
METADATANET-4077 Support the FictionBook 2 (FB2) e-book format (read-only) Feature
— Support the MOBI e-book format Feature
METADATANET-4094 Load documents from web resources with the new Metadata(URI) constructors Feature
METADATANET-4121 MSG: Internet message ID, billing, HTML and RTF body; EML: editable attachments Feature
METADATANET-4123, METADATANET-4124 MSG: conversation topic, display names, encryption and signature flags, sender and “sent representing” addresses, reply-to, read receipt and other MAPI properties Feature
METADATANET-4110, METADATANET-4111 Email: getSenderEmailAddress(), editable MSG sender name, body and categories Enhancement
METADATANET-4099 MSG: editable delivery time, client submit time and headers Enhancement
— EmailHeaderPackage.set(String, PropertyValue) adds or updates an email header Enhancement
— WordProcessing: HyperlinksChanged, ScaleCrop and SharedDoc properties Enhancement
METADATANET-4139 Metadata.sanitize() removes PDF attachments, bookmarks, form fields and digital signatures Enhancement
METADATANET-4140 New tags Tags.getTime().getDelivery() and Tags.getTool().getCompression(); more properties are tagged Enhancement
METADATAJAVA-718 Aspose libraries updated Enhancement
— Previews of CAD drawings were empty Fix
— RAR, 7z and TAR archives could be recognized as MP3 files Fix
— AVIF images could be recognized as MP3, MOV or HEIF files Fix
— Smaller fixes: equals/hashCode consistency of raw tags, null-safe JSON import, overflow in size arithmetic, closed streams after ZIP packing Fix

Behaviour changes to check before upgrading

  1. PDF sanitizing removes more. Metadata.sanitize() now removes annotations, attachments, bookmarks, form fields and digital signatures from PDF documents; before 26.11 it removed annotations only. If a sanitized PDF has to keep these items, don’t call sanitize() on it — remove only the properties you need.
  2. Archives are recognized by their extension. RAR, 7z, TAR and the new archive formats are detected by the file extension, so an archive loaded from an InputStream or a URI needs its format set explicitly (see below).
  3. Email sender property renamed. In the property list, the sender property is now named SenderEmailAddress instead of Sender. Code that looks the property up by name has to use the new name. EmailPackage.getSender() is deprecated in favour of getSenderEmailAddress().
  4. MPEG audio headers are read-only. MpegAudioPackage describes the audio stream, so its properties — such as the MPEG version, channel mode, bitrate and frequency — can no longer be changed through the property API.

New formats

Archives: AAR, GZIP, BZ2, XZ and Zstandard

The new FileType constants are AAR, GZIP (.gz), BZ2, XZ and ZSTD (.zst). Each format comes with a read-only root package:

Format Root package What it exposes
AAR AarRootPackage AarPackage: total entries, solid flag, and AarFile entries with name, length and directory flag
GZIP GzipRootPackage GzipPackage: name, total entries, compressed and uncompressed size
BZ2 Bz2RootPackage Bz2Package: name, total entries, size
XZ XzRootPackage XzPackage: name, total entries, size
Zstandard ZstdRootPackage ZstdPackage: name, total entries, size
try (Metadata metadata = new Metadata("backup.gz")) {
    GzipRootPackage root = metadata.getRootPackageGeneric();
    GzipPackage gzip = root.getGzipPackage();

    System.out.println(gzip.getName());
    System.out.println(gzip.getSize());
    System.out.println(gzip.getUncompressedSize());
}

OGG Vorbis audio

FileType.OGG and OggRootPackage.getOggPackage() were added. OggPackage reads the Vorbis comment fields:

  • title, album, track number, artist, performer, genre and date;
  • copyright, license, organization, description, location, contact and ISRC;
  • the vendor string and the version;
  • any remaining comments, through getOggUserComments().
try (Metadata metadata = new Metadata("track.ogg")) {
    OggRootPackage root = metadata.getRootPackageGeneric();
    OggPackage ogg = root.getOggPackage();

    System.out.println(ogg.getArtist() + " - " + ogg.getTitle());
    for (OggUserComment comment : ogg.getOggUserComments()) {
        System.out.println(comment.getHeader() + " = " + comment.getValue());
    }
}

E-books: FB2 and MOBI

  • FictionBook 2 (FB2) — FileType.FB2 and Fb2RootPackage.getFb2Package() were added; the format is read-only. Fb2Package has four sections: the title info and the source title info (Fb2TitleInfo: book title, authors, genres, keywords, language and sequence), the document info (Fb2DocumentInfo) and the publish info (Fb2PublishInfo).
  • MOBI — FileType.MOBI and MobiRootPackage.getMobiPackage() were added. MobiPackage exposes the PDB header (PDBHeader) and the MOBI header (MobiHeader). The full name of the book can be edited with MobiHeader.setFullName(String).

Loading from a URI

Two new constructors load a document straight from a java.net.URI, so you no longer need to download the file yourself:

public Metadata(java.net.URI uri)
public Metadata(java.net.URI uri, LoadOptions loadOptions)

The document is downloaded into memory and then loaded the same way as from a stream. Because archives are now recognized by their extension, set the format explicitly when loading an archive from a stream or a URI:

try (Metadata metadata = new Metadata(inputStream, new LoadOptions(FileFormat.Rar))) {
    // ...
}

Email messages

  • EmailPackage.getSenderEmailAddress() was added; EmailPackage.getSender() is deprecated and returns the same value.
  • EmailPackage.setHeaders(EmailHeaderPackage) and EmailHeaderPackage.set(String, PropertyValue) add or update email headers.
  • EmlPackage.getAttachments() and EmlPackage.setAttachments(EmailAttachmentPackage[]) make EML attachments editable.

MsgPackage gains many new properties:

  • editable: Body, Categories, SenderName, DeliveryTime, ClientSubmitTime, Billing, BodyHtml, BodyRtf, ReplyTo, ReadReceiptRequested, SenderSmtpAddress, SentRepresentingEmailAddress, SentRepresentingName, Mileage, Attachments;
  • read-only: InternetMessageId, ConversationTopic, DisplayBcc, DisplayCc, DisplayName, DisplayNamePrefix, DisplayTo, NormalizedSubject, SubjectPrefix, SenderAddressType, SentRepresentingAddressType, SentRepresentingSmtpAddress, TransportMessageHeaders, and the flags isEncrypted(), isSigned() and isTemplate().
try (Metadata metadata = new Metadata("message.msg")) {
    MsgRootPackage root = metadata.getRootPackageGeneric();
    MsgPackage msg = root.getMsgPackage();

    System.out.println(msg.getInternetMessageId());
    msg.setSenderName("Support Team");
    msg.setCategories(new String[] { "Reviewed" });

    metadata.save("message-updated.msg");
}

Other enhancements

Sanitizing PDF documents

Metadata.sanitize() now removes attachments, bookmarks, form fields and digital signatures from PDF documents, not only annotations. This makes it a more thorough way to clean a PDF before sharing it outside your organization.

WordProcessing documents

WordProcessingPackage gains three properties that can be read and edited: HyperlinksChanged, ScaleCrop and SharedDoc.

Tags

  • Tags.getTime().getDelivery() marks the delivery time of messages.
  • Tags.getTool().getCompression() marks the compression settings of ZIP, PNG and PSD files.

Both tags can be used with ContainsTagSpecification in Metadata.findProperties, and more existing properties are now tagged.

Fixes

  • Previews of CAD drawings were empty.
  • RAR, 7z and TAR archives could be recognized as MP3 files.
  • AVIF images could be recognized as MP3, MOV or HEIF files.
  • Smaller fixes: equals/hashCode consistency of raw tags, null-safe JSON import, overflow in size arithmetic, and closed streams after ZIP packing.

Aspose libraries updated

The bundled Aspose libraries are updated to: Aspose.Words 26.8, Aspose.Cells 26.9, Aspose.Slides 26.9, Aspose.PDF 26.8.1, Aspose.Email 26.8, Aspose.CAD 26.8, Aspose.PSD 26.8, Aspose.Diagram 26.9, Aspose.BarCode 26.6, Aspose.Imaging 25.12 and Aspose.ZIP 26.7.

How to get the update

Maven

Add the GroupDocs repository and the dependency to your pom.xml:

<repositories>
    <repository>
        <id>groupdocs-artifacts-repository</id>
        <name>GroupDocs Artifacts Repository</name>
        <url>https://releases.groupdocs.com/java/repo/</url>
    </repository>
</repositories>

<dependencies>
    <dependency>
        <groupId>com.groupdocs</groupId>
        <artifactId>groupdocs-metadata</artifactId>
        <version>26.11</version>
    </dependency>
</dependencies>

Direct download

Download the JAR from the GroupDocs.Metadata for Java 26.11 download page.

Resources