We’re pleased to announce the release of GroupDocs.Parser for Java 26.10, available as of October 2026. This is a maintenance release focused on correctness: text search works again for every overload, document structure extraction handles more Word documents, file information reports encryption accurately, and PDF image coordinates now match the rest of the API. Licensing is now handled by GroupDocs.Foundation, and the bundled Aspose components have been updated.

What’s new in this release

Key Summary Category
PARSERJAVA-491 Parser.search no longer throws NullPointerException when the search is not scoped to a page Fix
PARSERJAVA-513 Parser.getStructure() works for Word documents with header or footer tables and returns well-formed XML Fix
— Parser.getFileInfo(String) reports password-protected DOCX, XLSX and PPTX files as encrypted Fix
— FileInfo.isEncrypted() is true only for encrypted PDF documents Fix
— PDF image rectangles are measured from the top of the page, like the other page areas Fix
PARSERJAVA-154 Licensing is performed by GroupDocs.Foundation, the licensing core shared by the GroupDocs products Update
PARSERJAVA-512 Bundled Aspose components updated Update
PARSERJAVA-509 Published POM: product name, a short description, <url>, <organization> and <scm> Update

Behaviour changes to check before upgrading

Two changes affect what existing code observes:

  1. PDF image coordinates. The top coordinate of PDF image rectangles is now measured from the top of the page. If your code converted it from the bottom of the page, remove that conversion.
  2. Structure XML of Word documents. Words separated by a Word break character are now separated by a space in the structure XML.

Fixes

Text search not scoped to a page

Since version 25.5, every Parser.search call that was not scoped to a page failed with a NullPointerException. This affected the search(String keyword) overload, search(String keyword, SearchOptions options) with searchByPages set to false (the default), and searches that request highlights. Searches with searchByPages set to true were not affected.

In 26.10 these calls return search results again:

try (Parser parser = new Parser("sample.pdf")) {
    Iterable<SearchResult> results = parser.search("lorem");
    if (results == null) {
        return; // Search isn't supported for this document
    }

    for (SearchResult result : results) {
        System.out.println(result.getPosition() + ": " + result.getText());
    }
}

Document structure of Word documents

Parser.getStructure() used to throw on word processing documents that contain a table in a header or footer, and could return XML that did not parse when the document text contained control characters. Both issues are fixed:

  • tables in headers and footers are described by their logical grid: the row index in the table, the cell index in the row and spans of 1;
  • Word break characters (cell end, vertical tab, page break, column break) become a space, so the words they separate no longer run together;
  • characters that XML 1.0 does not allow are dropped;
  • attribute values are escaped the same way as text.

File information for password-protected documents

The Parser.getFileInfo(String filePath) overload did not recognise password-protected DOCX, XLSX and PPTX files: it returned a size of 0 and isEncrypted() set to false for DOCX and XLSX, and no file type for PPTX. It now returns the same result as the InputStream overload: the actual file size, isEncrypted() set to true and FileType.Unknown (the format of an encrypted document cannot be read without the password).

This makes it easy to detect a protected file and open it with a password:

FileInfo info = Parser.getFileInfo("protected.docx");
if (info.isEncrypted()) {
    LoadOptions options = new LoadOptions("password");
    try (Parser parser = new Parser("protected.docx", options);
         TextReader reader = parser.getText()) {
        System.out.println(reader.readToEnd());
    }
}

Encryption of PDF documents

FileInfo.isEncrypted() previously returned true for every PDF document. It is now true only for PDF documents that are actually encrypted.

Position of PDF images

The rectangles of PDF images returned by Parser.getImages() were measured from the bottom of the page, while text, tables and other page areas are measured from the top. Images now use the same top-based coordinates, so getImages(PageAreaOptions) finds the images inside the given rectangle:

try (Parser parser = new Parser("images.pdf")) {
    // Images in the top-left 400 x 400 points of each page
    PageAreaOptions options = new PageAreaOptions(new Rectangle(new Point(0, 0), new Size(400, 400)));
    for (PageImageArea image : parser.getImages(options)) {
        System.out.println(image.getPage().getIndex() + ": " + image.getRectangle());
    }
}

Updates

Licensing on GroupDocs.Foundation

License validation, metered licensing and the licensing of the bundled Aspose components are now performed by GroupDocs.Foundation, the same licensing core used by the other GroupDocs products. The licensing API is unchanged: License.setLicense, Metered.setMeteredKey, Metered.getConsumptionQuantity and Metered.getConsumptionCredit are called exactly as before.

License license = new License();
license.setLicense("GroupDocs.Parser.Java.lic");

try (Parser parser = new Parser("document.docx");
     TextReader reader = parser.getText()) {
    System.out.println(reader.readToEnd());
}

Bundled Aspose components

Component 26.9 26.10
Aspose.Cells 26.3 26.9
Aspose.Email 26.1 26.8
Aspose.PDF 26.2 26.8.1
Aspose.Slides 26.2 26.9
Aspose.Words 26.3 26.8
Aspose.BarCode 26.4 26.6
Aspose.Imaging 25.12 25.12
Aspose.ZIP 25.10 25.10
Aspose.Note 23.3 23.3

The product still runs on Java 8.

Published artifact metadata

The published POM now carries the name GroupDocs.Parser for Java, a short description of what the library extracts and which formats it reads, the product page as <url>, and declares <organization> and <scm>. This is the information that dependency indexes such as MVNRepository display. No code, behaviour or API changed.

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-parser</artifactId>
        <version>26.10</version>
    </dependency>
</dependencies>

Direct download

Download the JAR from the GroupDocs.Parser for Java 26.10 download page.

Resources