Word文書から形状を抽出する方法(GroupDocs.Watermark for Java)

現代のドキュメント中心のアプリケーションでは、Word ファイルから 形状を抽出する方法 は一般的な課題です。ダイアグラムの使用状況を監査したり、グラフィックを画像に変換したり、動的レポートを生成したりする必要がある場合、プログラムで形状メタデータを取得できることで、膨大な手作業時間を節約できます。このチュートリアルでは、GroupDocs.Watermark for Java を使用して DOCX をロードし、すべての形状を列挙し、タイプ、サイズ、位置などのプロパティを取得する方法を解説します。

クイック回答

  • どのライブラリが形状抽出を処理しますか? GroupDocs.Watermark for Java.
  • 最低 Java バージョンは? JDK 8 or newer.
  • 開発にライセンスは必要ですか? A free trial works for testing; a full license is required for production.
  • 大きなドキュメントを処理できますか? Yes—process sections incrementally to keep memory usage low.
  • Maven は推奨のセットアップ方法ですか? Maven simplifies dependency management and is recommended for most projects.

Word 文書における形状抽出とは何ですか?

形状抽出とは、Word ファイルをプログラムで読み取り、各グラフィックオブジェクト(画像、図形、SmartArt、チャート、テキストボックスなど)の詳細を取得するプロセスです。取得されたメタデータには形状の種類、寸法、位置、関連するテキストが含まれ、変換や分析などのさらなる処理が可能になります。

なぜ GroupDocs.Watermark for Java を使用するのか?

GroupDocs.Watermark は 30 以上のドキュメント形式 をサポートし、ストリーミング API によりファイル全体をメモリに読み込むことなく 数百ページのファイル を処理できます。ライブラリは典型的なサーバー上で 100 ページのドキュメントあたり 200 ms 未満 で形状メタデータを処理し、バッチ操作において高速で信頼性の高い結果を提供します。

前提条件

  • Java Development Kit (JDK) 8 以上。
  • IDE(IntelliJ IDEA や Eclipse など)。
  • Java I/O と Maven の基本的な知識。

本チュートリアルでは、透かし機能に焦点を当てつつ、深いドキュメント検査機能も提供する堅牢な SDK である GroupDocs.Watermark for Java を使用します。

GroupDocs.Watermark for Java のセットアップ

Maven または直接ダウンロードで SDK を統合します。

Maven の使用

以下の設定を pom.xml ファイルに追加してください:

<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>

直接ダウンロード

または、最新バージョンを GroupDocs.Watermark for Java releases からダウンロードしてください。

ライセンス取得

無料トライアルライセンスで全機能を試すことができます。製品環境で使用する場合は、GroupDocs ポータルから永続ライセンスキーを取得してください。

実装ガイド

実装は、ドキュメントのロードと形状情報の抽出という 2 つの論理パートに分けます。

GroupDocs.Watermark を使用して Word 文書から形状を抽出する方法は?

Watermarker は GroupDocs.Watermark の主要クラスで、ドキュメントをロードし、その内容にアクセスできます。Watermarker インスタンスで DOCX をロードし、各セクションと形状を反復してプロパティを読み取ります。初期化して列挙するという 2 段階パターンは 30 以上のサポート対象形状タイプ をすべてカバーし、最大 500 ページのドキュメントでも過剰なメモリ使用なしに動作します。ドキュメントを効率的にストリーミングし、大きなファイルでも高いメモリ消費なしに処理できます。

手順 1: ロードオプションの設定

WordProcessingLoadOptions を使用すると、ファイルの解析方法を細かく調整できます(例: ヘッダーを無視、ファストモードを有効化)。

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

このスニペットは、ドキュメントをメモリに保持し、検査の準備を行う Watermarker を作成します。

手順 2: ワードプロセッシングコンテンツへのアクセス

セクションと形状を反復し、タイプ、寸法、配置、ヘッダー/フッターに存在するかどうかなどの重要な詳細を出力します。

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

このループはすべての形状オブジェクトをカバーし、ヘッダーやフッターに埋め込まれた隠れたグラフィックを見逃さないようにします。

よくある問題と解決策

  • File not found – 絶対パスまたは相対パスを再確認し、Paths.get(...).toAbsolutePath() を使用して明確にしてください。
  • Performance bottlenecks – 300 ページを超えるドキュメントの場合、セクションを一つずつ処理し、各バッチ後に watermarker.close() を呼び出してメモリを解放してください。
  • Unsupported shape type – GroupDocs.Watermark は現在 25 のネイティブ形状カテゴリをサポートしています。カスタム OfficeArt オブジェクトについては、代替手段として OpenXML SDK の使用を検討してください。

実用的な応用例

  1. Automated report generation – ダッシュボードに埋め込むためにチャートを抽出します。
  2. Compliance auditing – 規制対象の文書に禁止されたグラフィックが含まれていないか確認します。
  3. Migration pipelines – コンテンツをウェブベースの出版プラットフォームに移行する前に、形状を SVG に変換します。

パフォーマンス上の考慮点

  • Watermarker オブジェクトは watermarker.close() で速やかに解放し、ネイティブリソースを解放してください。
  • 形状メタデータだけが必要で、完全なコンテンツレンダリングが不要な場合は、WordProcessingLoadOptions の fastLoad フラグを有効にしてください。
  • サーバーに十分な CPU コアがある場合にのみ、ドキュメントを並列ストリームで処理してください。スレッド安全でない共有オブジェクトは避けましょう。

結論

これで、GroupDocs.Watermark for Java を使用して Word 文書から 形状を抽出する方法 が分かりました。Watermarker でドキュメントをロードし、ロードオプションを設定し、各形状を反復することで、最も複雑なファイルでも処理できる強力な自動化ワークフローを構築できます。

次のステップ

  • Shape オブジェクトの getImageData() メソッドを試して、画像を PNG としてエクスポートしてみてください。
  • 透かし検出や除去など、他の GroupDocs.Watermark 機能も調査してください。
  • 形状抽出と GroupDocs.Parser ライブラリを組み合わせて、周囲のテキストを取得し、よりリッチな分析を行ってください。

よくある質問

Q: GroupDocs.Watermark for Java とは何ですか?
A: GroupDocs.Watermark for Java は、DOCX、PDF、PPTX など 30 以上のファイル形式に対して透かしの作成、検出、ドキュメント検査を可能にする包括的な SDK です。

Q: パスワード保護された Word ファイルから形状を抽出できますか?
A: はい。Watermarker インスタンスを作成する際に WordProcessingLoadOptions にパスワードを渡してください。

Q: このライブラリは Linux サーバーで動作しますか?
A: 完全に対応しています。GroupDocs.Watermark はプラットフォームに依存せず、Java 8+ をサポートする任意の OS 上で動作します。

Q: 1 つのドキュメントで処理できる形状の数はどれくらいですか?
A: SDK は数千の形状を処理でき、テストでは最大 5,000 個の個別形状を含むドキュメントでも安定したパフォーマンスが確認されています。

Q: 形状抽出に別途ライセンスは必要ですか?
A: いいえ、形状抽出は標準の GroupDocs.Watermark ライセンスに含まれています。


最終更新日: 2026-09-06
テスト環境: GroupDocs.Watermark 23.12 for Java
作者: GroupDocs

関連チュートリアル