使用 GroupDocs.Merger for Java 分割 DOCX 頁面

在本教學中,您將發現 如何分割 docx 頁面,使用 GroupDocs.Merger for Java 高效地執行。無論您需要將龐大的合約拆分為單獨頁面,或是將特定章節提取為記憶體內的串流,我們將逐步說明設定、程式碼與實務技巧,讓您在數分鐘內實作此解決方案。

快速解答

  • 什麼函式庫在 Java 中處理 DOCX 分割? GroupDocs.Merger for Java.
  • 我可以將 DOCX 分割成單獨檔案嗎? 可以 – 透過設定 SplitOptions 並指定所需的頁碼。
  • 能否將頁面以串流而非檔案的形式取得? 絕對可以,提供自訂的 SplitStreamFactory 即可。
  • 我需要授權嗎? 臨時試用授權可用於評估;正式環境則需完整授權。
  • 支援哪些 Java 版本? 任何 JDK 8 以上皆可搭配最新的 GroupDocs.Merger 版本。

什麼是分割 docx 頁面?

分割 docx 頁面 指的是從多頁的 Word 文件中抽取一頁或多頁,並將每個選取的頁面儲存為單獨的檔案或記憶體內的串流。此功能可支援模組化交付、合規工作流程,或即時處理,而無需一次載入整份文件。

為何使用 GroupDocs.Merger for Java?

GroupDocs.Merger 以 純 Java 處理文件——不需要本機二進位檔,也不需安裝 Office。它支援 超過 50 種輸入與輸出格式,且能在一般 2.5 GHz 伺服器上於 2 秒內分割 200 頁的 DOCX,得益於其基於串流的架構,記憶體使用量保持在 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 版本

取得授權

設定 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 頁面分割成檔案 或串流。

如何使用 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);

專業提示: 請確認輸出目錄已存在且應用程式具備寫入權限;否則分割將失敗。

常見陷阱

  • 缺少輸出資料夾: 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

實作 SplitStreamFactory,為每個頁面提供全新的 OutputStream,並儲存完成的串流。

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. 線上學習平台: 按需求提供逐章的 Word 檔案,同時保護完整教材。
  3. 商業報告: 僅將季報的財務部分發送給 CFO,降低頻寬需求並提升機密性。

效能考量

  • 記憶體效能的串流: 對於大於 50 MB 的文件,建議使用串流方式以降低堆積記憶體使用量。
  • 批次處理: 在單一 JVM 會話中聚合多個分割任務,以分攤啟動開銷。
  • 資源清理: 呼叫 merger.close() 並關閉所有串流,以避免記憶體泄漏。
  • 速度指標: 在標準 8 核心伺服器上,將 300 頁的 DOCX 分割為單頁約需 1.8 秒。

常見問題

Q: 什麼是 GroupDocs.Merger for Java?
A: 它是一個 Java 函式庫,支援合併、分割與轉換超過 50 種文件格式(包括 DOCX、PDF、PPTX 與 HTML),無需 Microsoft Office。

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 最新版本
作者: GroupDocs

相關教學