使用 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.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 頁面分割成檔案 或串流。
如何使用 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。 - 完成使用後務必關閉串流,以釋放記憶體並避免泄漏。
實務應用
- 法律合約: 抽取單獨條款以便分別審閱,避免曝光整份協議。
- 線上學習平台: 按需求提供逐章的 Word 檔案,同時保護完整教材。
- 商業報告: 僅將季報的財務部分發送給 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