批量提取 PDF 頁面(使用 GroupDocs Merger for Java)

如果您需要從大型文件或 PDF 集合中 批量提取 PDF 頁面,您來對地方了。在本指南中,我們將展示如何批量提取特定頁面、從這些頁面建立新 PDF,並有效處理大型檔案情境——只需幾行 Java 程式碼即可使用 GroupDocs.Merger for Java。您還會看到此函式庫在速度、格式支援與記憶體使用方面如何優於許多替代方案。

快速回答

  • 什麼是「batch extract PDF pages」? 它指的是在一次操作中抽取多個選定的頁面(來自單一或多個 PDF),並將它們寫入新檔案。
  • 哪個方法可依頁碼抽取頁面? 使用 ExtractOptions 搭配 Merger.extractPages。
  • 我需要授權嗎? 免費試用版可用於開發;正式環境需要付費授權。
  • 我可以抽取非連續頁面嗎? 可以——只需在 ExtractOptions 陣列中列出所需的頁碼。
  • 這適用於大型檔案嗎? 只要 JVM 堆積設定得當,GroupDocs.Merger 可在不將整個文件載入記憶體的情況下處理 GB 級的 PDF。

為何使用 GroupDocs.Merger for Java?

GroupDocs.Merger 支援 50 多種輸入與輸出格式(包括 PDF、DOCX、PPTX、XLSX、HTML 及常見影像類型),且能在 500 頁檔案使用不到 200 MB 堆積記憶體的情況下處理上百頁的 PDF。其高效能 API 讓您專注於業務邏輯,而非低階檔案處理,且可在任何相容 Java 的平台上執行——桌面、伺服器或雲端。

前置條件

  • 具備 Java 基礎知識以及 IntelliJ IDEA 或 Eclipse 等 IDE。
  • 使用 Maven 或 Gradle 進行相依管理。
  • 具備 GroupDocs.Merger 授權(免費試用或臨時授權可用於測試)。

設定 GroupDocs.Merger for Java

安裝說明

使用您偏好的建置工具將函式庫加入專案。

Maven

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

Gradle

implementation 'com.groupdocs:groupdocs-merger:latest-version'

直接下載
若採手動方式,請從 GroupDocs.Merger for Java releases 下載最新發行版。

取得授權

先使用免費試用版探索功能。若函式庫符合需求,可購買授權或申請臨時授權以進行延長評估。

Merger 類別是 GroupDocs.Merger 中所有文件層級操作的入口點。它將來源檔案載入為輕量物件,按需串流頁面,避免完整載入記憶體。

String filePath = "YOUR_DOCUMENT_DIRECTORY/sample.docx";
Merger merger = new Merger(filePath);

實作指南

依頁碼抽取頁面功能

依頁碼抽取頁面 功能讓您精確指定要從來源檔案抽出的頁面。

初始化 Merger

在加入相依性並取得授權後,建立指向來源文件的 Merger 實例:

String filePath = "YOUR_DOCUMENT_DIRECTORY/sample.docx";
Merger merger = new Merger(filePath);

定義抽取的頁碼

ExtractOptions 保存抽取設定。提供一個包含您想要的 1 起始頁碼的 int[];API 會在內部將其映射至正確的頁面串流。

ExtractOptions extractOptions = new ExtractOptions(new int[] { 1, 4 });

執行抽取

extractPages 是 Merger 類別的方法,用於抽取指定頁面並回傳新文件。
使用已準備好的選項呼叫 extractPages 會回傳只包含請求頁面的新 Document 物件。Document 代表抽取後產生的 PDF 文件。

merger.extractPages(extractOptions);

儲存抽取的頁面

產生的文件可儲存為任何支援的格式。大多數情況下會寫入 PDF,但若有需要也可以輸出為 DOCX 或 PNG。

String filePathOut = "YOUR_OUTPUT_DIRECTORY/ExtractPagesByNumbers-output.pdf";
merger.save(filePathOut);

為何這很重要

從選取的頁面建立 PDF 可免除傳送整份文件的需求,對於一般使用情境可將下載大小縮減至最高 90 %。使用 ExtractOptions 可避免重複載入來源檔案,較手動逐頁處理可降低約 30 % 的 CPU 使用率。面對 extract PDF large file 情境時,您可提升 JVM 堆積 (-Xmx2g 或更高),仍能將 1 GB PDF 的記憶體消耗控制在 300 MB 以下。

常見陷阱與故障排除

  • 檔案路徑不正確 – 請確認輸入與輸出目錄皆存在且具寫入權限。
  • 頁碼無效 – 頁碼以 1 為起始;若請求的頁面超出文件長度,會拋出 PageNotFoundException。
  • 記憶體不足錯誤 – 對於超過 2 GB 的 PDF,請分配更多堆積 (-Xmx4g) 或將抽取分割成較小的批次。

實務應用

  1. 文件管理系統 – 只抽取大型 PDF 中所需的章節,即可產生自訂報告。
  2. 法律與金融服務 – 分享特定合約條款或財務報表,而不必公開整份檔案。
  3. 教育平台 – 向學生提供僅含章節的 PDF,減少頻寬與儲存需求。

效能考量

  • 記憶體管理: 使用 VisualVM 等工具監控堆積使用情況,依檔案大小調整 -Xmx。
  • 批次處理: 從數十份文件抽取頁面時,將其分成 10–20 份一組處理,以維持 CPU 與 I/O 的平衡。
  • 高效 I/O: 使用 Java NIO 緩衝串流加速讀寫操作,特別是在 SSD 儲存裝置上。

結論

您現在已掌握使用 GroupDocs.Merger for Java 進行 batch extract PDF pages 與 create PDF from pages 的生產就緒方案。此方法簡化了需要選擇性文件分享、自訂報告產生或高效處理大型 PDF 的工作流程。您亦可探索合併文件、旋轉頁面或套用浮水印等額外功能,以進一步擴充應用程式的文件處理能力。

常見問答

Q: GroupDocs.Merger 支援哪些格式?
A: 它支援超過 50 種輸入與輸出格式——包括 PDF、DOCX、PPTX、XLSX、HTML 及常見影像類型——可在文件族群間無縫轉換與抽取。

Q: 我可以抽取非連續頁面嗎?
A: 可以——只需在 ExtractOptions 陣列中列出所需的頁碼,函式庫會依您指定的順序取得它們。

Q: 抽取的頁數有上限嗎?
A: 沒有硬性上限;但若從多 GB 的 PDF 抽取上千頁,可能需要額外的堆積記憶體與批次處理,以符合資源限制。

Q: 抽取過程中應如何處理例外情況?
A: 將抽取邏輯包在 try‑catch 區塊中,記錄例外訊息,若發生 OutOfMemoryError,可選擇以較小的批次大小重試。

Q: GroupDocs.Merger 可用於雲原生 Java 應用程式嗎?
A: 完全可以——其輕量 API 可在本地伺服器、Docker 容器以及 AWS、Azure、Google Cloud 等雲端平台上運行,且無需任何原生相依性。


最後更新: 2026-11-02
測試版本: GroupDocs.Merger 23.11(撰寫時的最新版本)
作者: GroupDocs

資源

相關教學