Как извлечь фигуры из документов Word с помощью GroupDocs.Watermark в Java
В современных приложениях, ориентированных на документы, как извлечь фигуры из файлов Word является распространённой задачей. Независимо от того, нужно ли вам проводить аудит использования диаграмм, конвертировать графику в изображения или создавать динамические отчёты, возможность программно получать метаданные фигур экономит бесчисленные часы ручной работы. Этот учебник покажет, как использовать GroupDocs.Watermark для Java, чтобы загрузить DOCX, перечислить каждую фигуру и получить её свойства, такие как тип, размер и расположение.
Быстрые ответы
- Какая библиотека обрабатывает извлечение фигур? GroupDocs.Watermark for Java.
- Минимальная версия Java? JDK 8 или новее.
- Нужна ли лицензия для разработки? Бесплатная пробная версия подходит для тестирования; полная лицензия требуется для продакшн.
- Можно ли обрабатывать большие документы? Да — обрабатывайте секции поочерёдно, чтобы снизить использование памяти.
- Является ли Maven предпочтительным способом настройки? Maven упрощает управление зависимостями и рекомендуется для большинства проектов.
Что такое извлечение фигур в документах Word?
Извлечение фигур — это процесс программного чтения файла Word и получения деталей о каждом графическом объекте — изображениях, рисунках, SmartArt, диаграммах или текстовых полях — чтобы вы могли анализировать или манипулировать ими в коде. Извлечённые метаданные включают тип фигуры, размеры, позицию и любой связанный текст, что позволяет выполнять дальнейшую обработку, такую как конверсия или анализ.
Почему использовать GroupDocs.Watermark для Java?
GroupDocs.Watermark поддерживает 30+ форматов документов и может работать с многостраничными файлами без загрузки всего файла в память благодаря своему потоковому API. Библиотека обрабатывает метаданные фигур менее чем за 200 мс на 100‑страничный документ на типичном сервере, обеспечивая быстрые и надёжные результаты для пакетных операций.
Предварительные требования
- Java Development Kit (JDK) 8 или выше.
- IDE, например IntelliJ IDEA или Eclipse.
- Базовое знакомство с Java I/O и Maven.
Мы будем использовать GroupDocs.Watermark for Java, надёжный SDK, сосредоточенный на водяных знаках, но также предоставляющий возможности глубокой инспекции документов.
Настройка GroupDocs.Watermark для Java
Интегрируйте SDK через Maven или прямую загрузку.
Использование Maven
Add the following configuration to your pom.xml file:
<repositories>
<repository>
<id>repository.groupdocs.com</id>
<name>GroupDocs Repository</name>
<url>https://releases.groupdocs.com/watermark/java/</url>
</repository>
</repositories>
<dependencies>
<dependency>
<groupId>com.groupdocs</groupId>
<artifactId>groupdocs-watermark</artifactId>
<version>24.11</version>
</dependency>
</dependencies>
Прямая загрузка
Alternatively, download the latest version from GroupDocs.Watermark for Java releases.
Приобретение лицензии
A free trial license lets you explore all features. For production use, obtain a permanent license key from the GroupDocs portal.
Руководство по реализации
We’ll split the implementation into two logical parts: loading the document and extracting shape information.
Как извлечь фигуры из документов Word с помощью GroupDocs.Watermark?
Watermarker is the primary class in GroupDocs.Watermark that loads a document and provides access to its contents. Load the DOCX with a Watermarker instance, then iterate through each section and shape to read its properties. The two‑step pattern—initialise, then enumerate—covers all 30+ supported shape types and works for documents up to 500 pages without excessive memory consumption. It efficiently streams the document, allowing you to work with large files without high memory consumption.
Шаг 1: настройка параметров загрузки
WordProcessingLoadOptions lets you fine‑tune how the file is parsed (e.g., ignore headers, enable fast mode).
import com.groupdocs.watermark.Watermarker;
import com.groupdocs.watermark.options.WordProcessingLoadOptions;
public void loadDocument() {
// Configure load options for loading a Word document
WordProcessingLoadOptions loadOptions = new WordProcessingLoadOptions();
// Create an instance of Watermarker with the specified document and load options
Watermarker watermarker = new Watermarker("YOUR_DOCUMENT_DIRECTORY/document.docx", loadOptions);
// Close the watermarker to release resources
watermarker.close();
}
The snippet creates a Watermarker that holds the document in memory and prepares it for inspection.
Шаг 2: доступ к содержимому Word‑обработки
Iterate through sections and shapes, printing key details such as type, dimensions, alignment, and whether the shape lives in a header/footer.
import com.groupdocs.watermark.contents.WordProcessingContent;
public void extractShapeInformation() {
// Load the Word document as configured previously
WordProcessingLoadOptions loadOptions = new WordProcessingLoadOptions();
Watermarker watermarker = new Watermarker("YOUR_DOCUMENT_DIRECTORY/document.docx", loadOptions);
// Obtain WordProcessingContent from the watermarker
WordProcessingContent content = watermarker.getContent(WordProcessingContent.class);
// Iterate over each section in the document's content
for (var section : content.getSections()) {
// Iterate over each shape within the current section
for (var shape : section.getShapes()) {
// Check if the shape is part of a header or footer
if (shape.getHeaderFooter() != null) {
System.out.println("In header/footer");
}
// Output details about each shape, such as type and dimensions
System.out.println(shape.getShapeType());
System.out.println(shape.getWidth());
System.out.println(shape.getHeight());
System.out.println(shape.isWordArt());
System.out.println(shape.getRotateAngle());
System.out.println(shape.getAlternativeText());
System.out.println(shape.getName());
System.out.println(shape.getX());
System.out.println(shape.getY());
System.out.println(shape.getText());
// If the shape contains an image, output its details
if (shape.getImage() != null) {
System.out.println(shape.getImage().getWidth());
System.out.println(shape.getImage().getHeight());
System.out.println(shape.getImage().getBytes().length);
}
// Output alignment information of the shape
System.out.println(shape.getHorizontalAlignment());
System.out.println(shape.getVerticalAlignment());
System.out.println(shape.getRelativeHorizontalPosition());
System.out.println(shape.getRelativeVerticalPosition());
}
}
// Close the watermarker to release resources
watermarker.close();
}
This loop covers every shape object, ensuring you don’t miss hidden graphics embedded in headers or footers.
Распространённые проблемы и решения
- Файл не найден — проверьте абсолютный или относительный путь; используйте
Paths.get(...).toAbsolutePath()для ясности. - Узкие места в производительности — для документов более 300 страниц обрабатывайте секции по одной и вызывайте
watermarker.close()после каждой партии, чтобы освободить память. - Неподдерживаемый тип фигуры — GroupDocs.Watermark в настоящее время поддерживает 25 родных категорий фигур; для пользовательских объектов OfficeArt рассмотрите использование OpenXML SDK в качестве резервного варианта.
Практические применения
- Автоматическое создание отчетов — извлекать диаграммы для встраивания в панели мониторинга.
- Аудит соответствия — проверять отсутствие запрещённой графики в регулируемых документах.
- Конвейеры миграции — конвертировать фигуры в SVG перед переносом контента на веб‑платформы публикаций.
Соображения по производительности
- Release the
Watermarkerobject promptly withwatermarker.close()to free native resources. - Enable the
fastLoadflag inWordProcessingLoadOptionswhen you only need shape metadata, not full content rendering. - Process documents in parallel streams only if your server has sufficient CPU cores; avoid thread‑unsafe shared objects.
Заключение
Теперь вы знаете как извлечь фигуры из документов Word с помощью GroupDocs.Watermark для Java. Загрузив документ с помощью Watermarker, настроив параметры загрузки и перебрав каждую фигуру, вы сможете построить мощные автоматизированные рабочие процессы, способные обрабатывать даже самые сложные файлы.
Следующие шаги
- Экспериментируйте с методом
getImageData()объектаShape, чтобы экспортировать изображения в PNG. - Исследуйте другие возможности GroupDocs.Watermark, такие как обнаружение и удаление водяных знаков.
- Скомбинируйте извлечение фигур с библиотекой GroupDocs.Parser, чтобы получать окружающий текст для более богатого анализа.
Часто задаваемые вопросы
Q: Что такое GroupDocs.Watermark for Java?
A: GroupDocs.Watermark for Java — это комплексный SDK, позволяющий создавать, обнаруживать и управлять водяными знаками, а также инспектировать документы более чем в 30 форматах, включая DOCX, PDF и PPTX.
Q: Можно ли извлекать фигуры из защищённых паролем файлов Word?
A: Да — передайте пароль в WordProcessingLoadOptions при создании экземпляра Watermarker.
Q: Работает ли библиотека на Linux‑серверах?
A: Абсолютно; GroupDocs.Watermark платформенно‑независим и работает на любой ОС, поддерживающей Java 8+.
Q: Сколько фигур можно обработать в одном документе?
A: SDK справляется с тысячами фигур; тесты показывают стабильную работу с документами, содержащими до 5 000 отдельных фигур.
Q: Нужна ли отдельная лицензия для извлечения фигур?
A: Нет, извлечение фигур включено в стандартную лицензию GroupDocs.Watermark.
Last updated: 2026-09-06
Tested with: GroupDocs.Watermark 23.12 for Java
Author: GroupDocs