Парсинг документов Java: извлечение изображений из документов с GroupDocs.Parser

В этом подробном руководстве вы узнаете java document parsing техники для извлечения изображений из различных типов файлов с помощью GroupDocs.Parser для Java. Мы пройдем настройку библиотеки, создание пользовательского ExternalResourceHandler и применение умной фильтрации, чтобы загружать только те ресурсы, которые действительно нужны — помогая сократить использование памяти и ускоряя обработку.

Быстрые ответы

  • Что делает GroupDocs.Parser? Он парсит более 50 форматов файлов, предоставляя текст, изображения и другие встроенные ресурсы для программного использования.
  • Могу ли я пропустить нежелательные изображения? Да — реализуйте пользовательский ExternalResourceHandler, чтобы фильтровать ресурсы на лету.
  • Какая версия Maven требуется? Используйте GroupDocs.Parser Java 25.5 или новее.
  • Нужна ли лицензия? Бесплатная пробная версия подходит для оценки; постоянная лицензия требуется для продакшн.
  • Является ли этот подход потокобезопасным? Создавайте отдельный экземпляр Parser для каждого потока; объекты не разделяются.

Что такое «извлечение изображений из документов»?

Извлечение изображений из документов означает программное получение встроенных файлов изображений, чтобы вы могли сохранять, отображать или далее обрабатывать их вне оригинального файла. Эта операция необходима, когда требуются миниатюры, визуализация данных или повторное использование медиа‑ресурсов без сохранения полного исходного документа.

Почему фильтровать ресурсы при извлечении изображений?

Фильтрация ресурсов при извлечении изображений позволяет сократить использование памяти до 70 % при обработке больших файлов, поскольку нежелательные бинарные данные никогда не попадают в кучу JVM. Это также повышает безопасность, предотвращая загрузку потенциально опасного контента, и ускоряет конвейер — большие контракты с сотнями декоративных график могут быть разобраны за небольшую часть исходного времени.

Предварительные требования

  • Java Development Kit (JDK) – версия 8 или выше.
  • Maven – для управления зависимостями.
  • Базовое знакомство с Java I/O и обработкой исключений.

Настройка GroupDocs.Parser для Java

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

<repositories>
   <repository>
      <id>repository.groupdocs.com</id>
      <name>GroupDocs Repository</name>
      <url>https://releases.groupdocs.com/parser/java/</url>
   </repository>
</repositories>

<dependencies>
   <dependency>
      <groupId>com.groupdocs</groupId>
      <artifactId>groupdocs-parser</artifactId>
      <version>25.5</version>
   </dependency>
</dependencies>

В качестве альтернативы загрузите последнюю версию с GroupDocs.Parser for Java releases.

Приобретение лицензии

  • Free Trial – исследуйте основные функции бесплатно.
  • Temporary License – разблокируйте полный функционал во время оценки.
  • Purchased License – требуется для коммерческого развертывания.

Как фильтровать ресурсы при извлечении изображений

Чтобы фильтровать ресурсы, реализуйте ExternalResourceHandler, который решает, какие встроенные файлы загружать. Зарегистрируйте этот обработчик в ParserSettings перед открытием документа, затем вызовите парсер. Обработчик получает метаданные каждого ресурса, позволяя принимать или отклонять его на основе критериев, таких как тип, размер или имя, гарантируя обработку только необходимых изображений.

Шаг 1: Создать пользовательский обработчик

ExternalResourceHandler — это интерфейс, позволяющий решить, следует ли загружать конкретный внешний ресурс, например изображение. Реализуйте метод onLoading и возвращайте true для ресурсов, которые нужно сохранить, и false — чтобы пропустить их. Метод onLoading получает метаданные ресурса и должен вернуть true для загрузки или false для пропуска ресурса.

import com.groupdocs.parser.options.ExternalResourceHandler;
import com.groupdocs.parser.data.ExternalResourceLoadingArgs;

class Handler extends ExternalResourceHandler {
    @Override
    public void onLoading(ExternalResourceLoadingArgs args) {
        if (!args.getUri().endsWith("installation.png")) {
            args.setSkipped(true);
        }
        super.onLoading(args);
    }
}

Шаг 2: Настроить ParserSettings с обработчиком

ParserSettings — класс конфигурации, содержащий параметры, такие как пользовательские обработчики, настройки обнаружения и оптимизации производительности парсера. Передайте экземпляр вашего обработчика в ParserSettings перед открытием документа.

import com.groupdocs.parser.Parser;
import com.groupdocs.parser.data.PageImageArea;
import com.groupdocs.parser.exceptions.IOException;
import com.groupdocs.parser.options.ParserSettings;

public class LoadExternalResources {
    public static void run() throws IOException {
        ParserSettings settings = new ParserSettings(new Handler());
        
        try (Parser parser = new Parser("YOUR_DOCUMENT_DIRECTORY", settings)) {
            Iterable<PageImageArea> images = parser.getImages();
            
            for (PageImageArea image : images) {
                System.out.println(image.getFileType());
            }
        }
    }
}

Шаг 3: Тонко настроить логику фильтрации

Если вам нужны более сложные правила, например фильтрация по размеру изображения, формату или шаблону URI, расширьте метод onLoading соответствующим образом. Например, можно пропустить любые изображения размером более 2 МБ или игнорировать все файлы PNG.

@Override
public void onLoading(ExternalResourceLoadingArgs args) {
    if (!args.getUri().endsWith("installation.png")) {
        args.setSkipped(true);
    }
}

Практические применения

  1. Document Management Systems – извлекать только необходимые изображения из отсканированных контрактов для создания миниатюр.
  2. Data Extraction Services – пропускать декоративные графики и сосредотачиваться на диаграммах, содержащих ценные данные.
  3. Web Scraping Tools – фильтровать трекинговые пиксели при получении значимых медиа из HTML‑документов.

Соображения по производительности

Parser — основной класс, который открывает документ и предоставляет доступ к его содержимому.

  • Фильтровать рано: Применяйте ваш пользовательский обработчик до итерации по ресурсам, чтобы избежать загрузки ненужных данных в память.
  • Своевременно освобождать: Используйте try‑with‑resources (try (Parser parser = …)) для освобождения нативных ресурсов.
  • Асинхронная обработка: Для больших пакетов обрабатывайте документы в параллельных потоках, удерживая каждый экземпляр Parser в пределах одного потока.

Распространённые проблемы и решения

ПроблемаПочему происходитРешение
Нет возвращенных изображенийОбработчик случайно пропускает все ресурсыПроверьте условие if и убедитесь, что args.setSkipped(true) вызывается только для нежелательных URI.
IOException при больших файлахНедостаточно памяти в кучеУвеличьте размер кучи JVM (-Xmx2g) или обрабатывайте страницы небольшими порциями.
Лицензия не распознанаИспользуется пробная DLL в продакшн‑кодеУкажите правильный путь к файлу лицензии через License.setLicense("path/to/license").

Часто задаваемые вопросы

Q: Какова основная цель использования пользовательского ExternalResourceHandler?
A: Он позволяет контролировать, какие внешние ресурсы загружаются, повышая безопасность и производительность за счёт фильтрации ненужных файлов.

Q: Могу ли я использовать GroupDocs.Parser для Java без лицензии?
A: Да, доступна бесплатная пробная версия, но расширенные функции и масштабные развертывания требуют действующей лицензии.

Q: Как обрабатывать исключения во время парсинга с GroupDocs.Parser?
A: Оберните вызовы парсинга в блоки try‑catch для IOException и других специфических исключений, чтобы корректно обрабатывать ошибки.

Q: Какие распространённые подводные камни при фильтрации ресурсов?
A: Неправильные проверки URI могут пропустить нужные файлы; используйте логирование или точки останова для проверки условий.

Q: Можно ли парсить не‑HTML документы с помощью GroupDocs.Parser для Java?
A: Конечно — GroupDocs.Parser поддерживает PDF, Word, Excel, PowerPoint и многие другие форматы.

Следующие шаги

Изучите полную API Reference для дополнительных настроек, таких как ParserSettings.setDetectTables(true) для извлечения таблиц, или поэкспериментируйте с ParserSettings.setExtractEmbeddedFonts(true) для извлечения шрифтов.


Последнее обновление: 2026-06-22
Тестировано с: GroupDocs.Parser 25.5 for Java
Автор: GroupDocs

Ресурсы

Связанные руководства