Ми раді оголосити про випуск GroupDocs.Parser for Java 26.10, доступний з жовтня 2026 року. Це випуск технічного обслуговування, орієнтований на коректність: пошук тексту знову працює для всіх перевантажень, витяг структури документа підтримує більше документів Word, інформація про файл точно повідомляє про шифрування, а координати зображень PDF тепер відповідають решті API. Ліцензування тепер здійснюється за допомогою GroupDocs.Foundation, а вбудовані компоненти Aspose оновлені.

Що нового у цьому випуску

Ключ Опис Категорія
PARSERJAVA-491 Parser.search більше не викидає NullPointerException, коли пошук не обмежений сторінкою Виправлення
PARSERJAVA-513 Parser.getStructure() працює з документами Word, що містять таблиці в колонтитулах, і повертає коректний XML Виправлення
— Parser.getFileInfo(String) повідомляє про захищені паролем файли DOCX, XLSX та PPTX як зашифровані Виправлення
— FileInfo.isEncrypted() дорівнює true лише для зашифрованих PDF‑документів Виправлення
— Прямокутники зображень PDF вимірюються від верхньої частини сторінки, як і інші області сторінки Виправлення
PARSERJAVA-154 Ліцензування виконується за допомогою GroupDocs.Foundation, ядра ліцензування, спільного для продуктів GroupDocs Оновлення
PARSERJAVA-512 Оновлені вбудовані компоненти Aspose Оновлення
PARSERJAVA-509 Опублікований POM: назва продукту, короткий опис, <url>, <organization> та <scm> Оновлення

Зміни в поведінці, які слід перевірити перед оновленням

Дві зміни впливають на те, що спостерігає існуючий код:

  1. Координати зображень PDF. Верхня координата прямокутників зображень PDF тепер вимірюється від верхньої частини сторінки. Якщо ваш код конвертував її з нижньої частини сторінки, видаліть цю конвертацію.
  2. XML структури документів Word. Слова, розділені символом розриву Word, тепер розділяються пробілом у XML структури.

Виправлення

Пошук тексту без обмеження сторінкою

З версії 25.5 кожний виклик Parser.search, який не був обмежений сторінкою, завершувався NullPointerException. Це стосувалося перевантаження search(String keyword), search(String keyword, SearchOptions options) з параметром searchByPages, встановленим у false (за замовчуванням), та пошуків, які запитували підсвічування. Пошуки з searchByPages, встановленим у true, не були під впливом.

У 26.10 ці виклики знову повертають результати пошуку:

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());
    }
}

Структура документів Word

Parser.getStructure() раніше викидав виключення для документів обробки тексту, які містять таблицю в колонтитулі, і міг повертати XML, який не парсувався, коли текст документа містив керуючі символи. Обидві проблеми виправлені:

  • таблиці в колонтитулах описуються їхньою логічною сіткою: індекс рядка в таблиці, індекс клітинки в рядку та охоплення 1;
  • символи розриву Word (кінець клітинки, вертикальна табуляція, розрив сторінки, розрив колонки) перетворюються на пробіл, тому слова, які вони розділяли, більше не зливаються;
  • символи, які не допускаються в XML 1.0, видаляються;
  • значення атрибутів екрануються так само, як і текст.

Інформація про файл для захищених паролем документів

Перевантаження Parser.getFileInfo(String filePath) не розпізнавало захищені паролем файли DOCX, XLSX та PPTX: воно повертало розмір 0 і isEncrypted() встановлене у false для DOCX і XLSX, а тип файлу був відсутній для PPTX. Тепер воно повертає той самий результат, що й перевантаження InputStream: фактичний розмір файлу, isEncrypted() встановлене у true і FileType.Unknown (формат зашифрованого документа не може бути прочитаний без пароля).

Це спрощує виявлення захищеного файлу та його відкриття за допомогою пароля:

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());
    }
}

Шифрування PDF документів

FileInfo.isEncrypted() раніше повертало true для кожного PDF‑документа. Тепер воно true лише для PDF‑документів, які дійсно зашифровані.

Позиція зображень PDF

Прямокутники зображень PDF, що повертаються Parser.getImages(), вимірювалися від нижньої частини сторінки, тоді як текст, таблиці та інші області сторінки вимірюються від верхньої. Тепер зображення використовують ті ж координати, що й верх, тому getImages(PageAreaOptions) знаходить зображення всередині заданого прямокутника:

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());
    }
}

Оновлення

Ліцензування в GroupDocs.Foundation

Перевірка ліцензії, лічильне ліцензування та ліцензування вбудованих компонентів Aspose тепер виконуються за допомогою GroupDocs.Foundation, того ж ядра ліцензування, що використовується іншими продуктами GroupDocs. API ліцензування не змінився: License.setLicense, Metered.setMeteredKey, Metered.getConsumptionQuantity та Metered.getConsumptionCredit викликаються точно так само, як раніше.

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());
}

Вбудовані компоненти Aspose

Компонент 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

Продукт все ще працює на Java 8.

Метадані опублікованого артефакту

Опублікований POM тепер містить назву GroupDocs.Parser for Java, короткий опис того, що бібліотека витягує і які формати читає, сторінку продукту у вигляді <url> та оголошує <organization> і <scm>. Це інформація, яку відображають індекси залежностей, такі як MVNRepository. Жодного коду, поведінки чи API не змінено.

Як отримати оновлення

Maven

Додайте репозиторій GroupDocs та залежність у ваш 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>

Пряме завантаження

Завантажте JAR зі сторінки завантаження GroupDocs.Parser for Java 26.10.

Ресурси