GroupDocs.Merger for JavaでDOCXページを分割

このチュートリアルでは、GroupDocs.Merger for Java を使用して docxページの分割方法 を効率的に学びます。大規模な契約書を個別ページに分割したり、特定のセクションをインメモリストリームとして取得したりする必要がある場合でも、セットアップ、コード、実践的なヒントを順に解説し、数分で実装できるようにします。

簡単な回答

  • JavaでDOCX分割を処理するライブラリは何ですか? GroupDocs.Merger for Java。
  • DOCXを個別のファイルに分割できますか? はい – 希望するページ番号で SplitOptions を設定します。
  • ファイルではなくストリームとしてページを取得できますか? もちろん、カスタム SplitStreamFactory を提供すれば可能です。
  • ライセンスは必要ですか? 評価用に一時的なトライアルライセンスが使用できますが、本番環境では正式ライセンスが必要です。
  • サポートされているJavaバージョンは? 最新のGroupDocs.MergerリリースはJDK 8以降で動作します。

DOCXページの分割とは何ですか?

Split docx pages は、複数ページからなる Word 文書から 1 ページまたは複数ページを抽出し、各選択部分を別々のファイルまたはインメモリストリームとして保存することを意味します。これにより、モジュラー配信、コンプライアンス主導のワークフロー、または全体文書を一度に処理せずにオンザフライで処理できるようになります。

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

GroupDocs.Merger はドキュメントを 純粋に Java だけで 処理します – ネイティブバイナリや Office のインストールは不要です。50 以上の入力および出力フォーマット をサポートし、典型的な 2.5 GHz サーバー上で 200 ページの DOCX を 2 秒未満で 分割でき、ストリームベースのアーキテクチャによりメモリ使用量は 100 MB 未満に抑えられます。

前提条件

必要なライブラリと依存関係

  • Java Development Kit (JDK): JDK 8以上。
  • GroupDocs.Merger for Java: ドキュメント操作のコアライブラリ。

依存関係の追加

MavenまたはGradleでライブラリを追加します(コードブロックは変更しません):

<dependency>
    <groupId>com.groupdocs</groupId>
    <artifactId>groupdocs-merger</artifactId>
    <version>latest-version</version>
</dependency>
implementation 'com.groupdocs:groupdocs-merger:latest-version'

公式サイトから最新リリースをダウンロードすることもできます: GroupDocs.Merger for Java releases

ライセンス取得

  • トライアルライセンス: GroupDocs.Trial License ページから一時キーを取得してください。
  • 本番ライセンス: GroupDocs Purchase で正式ライセンスを購入してください。

GroupDocs.Merger for Javaの設定

Merger は分割、結合、変換操作を統括する中心クラスです。

import com.groupdocs.merger.Merger;

public class DocumentSetup {
    public static void main(String[] args) {
        // Initialize a Merger object with the path of the input document
        Merger merger = new Merger("path/to/your/document.docx");
        
        // Perform operations on your document...
        
        merger.close();
    }
}

環境が整ったら、docxページをファイルまたはストリームに分割する 2 つの主要な方法を見ていきましょう。

GroupDocs.MergerでDOCXをファイルに分割する方法

ソース DOCX を読み込み、希望するページ範囲を指定し、split メソッドを呼び出すだけで、選択した各セグメントの出力ファイルが生成されます。split メソッドは提供された SplitOptions に従って文書を処理し、作成されたファイルのパスを返します。以下の手順で完全な本番対応実装を示します。

ステップ 1 – 入力と出力のパスを指定

元の DOCX の場所と、分割ファイルを書き込むフォルダーを定義します。

String filePath = "YOUR_DOCUMENT_DIRECTORY/SAMPLE_DOCX_10_PAGES";
String filePathOut = new File("YOUR_OUTPUT_DIRECTORY", 
    "SplitToSinglePages-" +
    Paths.get(filePath).getFileName().toString()
).getPath();

ステップ 2 – SplitOptionsを設定 (split options java)

SplitOptions は API に対し、抽出するページと結果の配置先を正確に指示します。

import com.groupdocs.merger.domain.options.SplitOptions;

SplitOptions splitOptions = new SplitOptions(filePathOut, new int[] { 3, 6, 8 });
  • filePathOut – 各ページファイルが配置されるフォルダー。
  • new int[]{3,6,8} – 分割したいページ番号(ページは1ベース)。

ステップ 3 – 分割を実行

Merger インスタンスを作成し split を呼び出します。メソッドは生成されたファイルパスのリストを返します。

import com.groupdocs.merger.Merger;

Merger merger = new Merger(filePath);
merger.split(splitOptions);

Pro tip: 出力ディレクトリが存在し、アプリケーションに書き込み権限があることを確認してください。権限がないと分割に失敗します。

一般的な落とし穴

  • 出力フォルダーがない:APIは自動的にディレクトリを作成しません。
  • ページ番号が間違っている:ページインデックスは1から始まります。0を指定するとエラーが発生します。

DOCXページをストリーム(インメモリ)に分割する方法

一時的なアクセスが必要な場合(例:ページを Web サービスで送信したり、インメモリで解析したりする場合)では、抽出した各ページをストリームとして取得することでディスク書き込みのオーバーヘッドを排除できます。カスタム SplitStreamFactory を使用すると、ライブラリは分割内容を直接 ByteArrayOutputStream オブジェクトに書き込み、途中ファイルなしで転送・保存・さらに処理できます。

ステップ 1 – 入力パスを定義し、ストリーム用リストを準備

ソースファイルを設定し、生成されたストリームを保持するコンテナを作成します。

import java.io.ByteArrayOutputStream;
import java.util.ArrayList;
import java.util.List;

String filePath = "YOUR_DOCUMENT_DIRECTORY/SAMPLE_DOCX_10_PAGES";
final List<OutputStream> resultStreams = new ArrayList<>();

ステップ 2 – カスタムSplitStreamFactoryでSplitOptionsを設定

各ページに新しい OutputStream を提供し、完了したストリームを保存するために SplitStreamFactory を実装します。

import com.groupdocs.merger.domain.common.SplitStreamFactory;
import com.groupdocs.merger.domain.options.SplitMode;

SplitOptions splitOptions = new SplitOptions(new SplitStreamFactory() {
    @Override
    public OutputStream createSplitStream(int pageNumber) {
        return new ByteArrayOutputStream(); // Create a stream for each page
    }
    
    @Override
    public void closeSplitStream(int pageNumber, OutputStream pageStream) {
        resultStreams.add(pageStream); // Collect the streams
    }
}, new int[] { 3, 4 }, SplitMode.Pages);
  • createSplitStream – 要求された各ページに対して新しい OutputStream を生成します。
  • closeSplitStream – 完了したストリームを後で使用できるように保存します。

ステップ 3 – 分割を実行し、ストリームを取得

分割操作を実行し、必要に応じてインメモリストリームを使用します(例:メールに添付、クラウドストレージへアップロード)。

Merger merger = new Merger(filePath);
merger.split(splitOptions);

return resultStreams; // Retrieve streams for processing

トラブルシューティングのヒント

  • ソース DOCX のパスが正しいことを確認してください。タイプミスは FileNotFoundException を引き起こします。
  • 使用後は必ずストリームを閉じてメモリを解放し、リークを防止してください。

実用的な活用例

  1. 法的契約書: 全体の合意書を公開せずに、個々の条項を抽出して別々にレビューできます。
  2. Eラーニングプラットフォーム: 需要に応じて章ごとの Word ファイルを提供し、全教科書を保護したままにします。
  3. ビジネスレポーティング: 四半期レポートの財務セクションだけを CFO に送信し、帯域幅を削減し機密性を向上させます。

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

  • メモリ効率の良いストリーム: ヒープ使用量を抑えるため、50 MB以上のドキュメントはストリーム方式を推奨します。
  • バッチ処理: 複数の分割ジョブを単一の JVM セッションでまとめ、起動オーバーヘッドを分散させます。
  • リソースのクリーンアップ: merger.close() を呼び出し、すべてのストリームを閉じてメモリリークを防止します。
  • 速度指標: 標準的な8コアサーバーでは、300ページの DOCX を個別ページに分割するのに約1.8秒かかります。

よくある質問

Q: GroupDocs.Merger for Java とは何ですか?
A: Microsoft Office を必要とせず、DOCX、PDF、PPTX、HTML など 50 以上のドキュメント形式の結合、分割、変換を可能にする Java ライブラリです。

Q: GroupDocs.Merger のライセンスはどう取得しますか?
A: 評価用に GroupDocs website から一時的なトライアルライセンスを取得してください。本番環境では同サイトで正式ライセンスを購入します。

Q: 同じ API で PDF ファイルも分割できますか?
A: はい、split メソッドは PDF、DOCX、PPTX などサポートされているフォーマットで動作します。

Q: ディスクに書き込まずに文書を分割することは可能ですか?
A: もちろんです。上記のストリームベースのアプローチを使用すれば、すべてメモリ内で処理できます。

Q: どのバージョンの GroupDocs.Merger を使用すべきですか?
A: 常に最新の安定版リリースを使用して、パフォーマンス向上やバグ修正の恩恵を受けてください。


最終更新: 2026-07-25
テスト環境: GroupDocs.Merger for Java latest-version
作者: GroupDocs

関連チュートリアル