如何在 Java 中分割 PDF 檔案

This article was translated from English: Does it need improvement?
Translated
View the article in English

使用 IronPDF for Java 在 Java 中分割 PDF 非常簡單,該類別提供 copyPagessplitBy 方法,可分別用於擷取單一頁面、提取頁面範圍,或於指定分隔點分割文件。 每個方法都會傳回一個新的 PdfDocument,您應將其獨立於原始物件之外另行儲存。

快速入門:在 Java 中分割 PDF 檔案

  1. 透過 Maven 或 Gradle 安裝 IronPDF for Java
  2. 使用 License.setLicenseKey() 設定您的授權金鑰
  3. 載入 PDF 檔案 PdfDocument.fromFile()
  4. 使用 copyPage() 來擷取單一頁面
  5. 將結果儲存為 saveAs()

```java :title=快速入門 //:path=/static-assets/ironpdf-java/content-code-examples/how-to/java-split-pdf-tutorial/quickstart.java import java.io.IOException; import java.nio.file.Path; import com.ironsoftware.IronPdf.License; import com.ironsoftware.IronPdf.PdfDocument;

public class Main { public static void main(String[] args) throws IOException { // 在呼叫任何 IronPDF 方法之前,請先設定授權金鑰 License.setLicenseKey("IronPDF-MYLICENSE-KEY-1EF01");

    // 從磁碟載入原始 PDF
    PdfDocument pdf = PdfDocument.fromFile(Path.of("source.pdf"));

    // 將首頁(從 0 開始計數的索引 0)擷取至新文件
    PdfDocument firstPage = pdf.copyPage(0);

    // 將擷取的頁面儲存為獨立的 PDF 檔案
    firstPage.saveAs(Path.of("page-one.pdf"));
}

}


在程式化生成文件時,PDF 分割是一項常見的需求。 若報告以單一檔案形式產生,在分發前可能需要拆分為獨立的各章節。 歸檔工作流程通常需要將每個章節或發票儲存為獨立檔案。在選擇性分享的情境下(例如僅將特定頁碼範圍傳送給客戶),精準擷取所需頁面而非傳送整份文件,將能帶來顯著效益。

IronPDF 透過 `PdfDocument` 類別上的一致 API,處理這三種分割模式。 該類別除可用於將 HTML 轉為 PDF 或載入現有檔案外,亦提供頁面擷取方法,因此拆分功能可自然地整合至任何現有的 IronPDF 工作流程中。 有關安裝與依賴項設定,請參閱《[入門指南](https://ironpdf.com/java/docs/)》。

IronPDF 中的所有頁面索引均採用零起始編號。 若原始文件共有十頁,有效的索引範圍應為 0 至 9。此規則適用於 `copyPages` 的兩端邊界,以及 `splitBy` 的邊界參數。 傳入超出範圍的索引值將在執行時引發例外,因此處理長度可變的文件時,請根據 `pdf.getPageCount()` 驗證頁數。

<div class="hsg-featured-snippet">
    <h2>如何在 Java 中分割 PDF</h2>
    <ol>
        <li><a href="https://ironpdf.com/java/#download-modal">安裝 Java 函式庫以分割 PDF 檔案</a></li>
        <li>使用 <strong>PdfDocument</strong> 類別載入原始 PDF</li>
        <li>使用 <code>copyPage</code> 將單一頁面擷取至新文件中</li>
        <li>使用 <code>copyPages</code> 提取指定頁碼範圍</li>
        <li>使用 <code>splitBy</code> 在特定頁面邊界處分割 PDF</li>
        <li>使用 <code>saveAs</code> 儲存每個生成的文件</li>
    </ol>
</div>

## 開始之前需要準備什麼?

在分割 PDF 之前,請確認已將 IronPDF 作為 Maven 或 Gradle 依賴項加入您的 Java 專案中。 此函式庫需要 Java 8 或更高版本。 請將 Maven Central 中的 IronPDF 組件加入您的建置檔案:

```xml
<dependency>
    <groupId>com.ironsoftware</groupId>
    <artifactId>ironpdf</artifactId>
    <version>2024.9.1</version>
</dependency>

對於 Gradle 專案,請在您的 build.gradle 中加入對應的 implementation 行。 完整的依賴項與設定說明請參閱《入門指南》。

需提供有效的授權金鑰。 請在應用程式啟動時設定此選項,並在呼叫任何 IronPDF 方法之前執行:

License.setLicenseKey("IRONPDF-MYLICENSE-KEY-1EF01");
License.setLicenseKey("IRONPDF-MYLICENSE-KEY-1EF01");
JAVA

有關授權選項與試用金鑰,請參閱授權金鑰指南

提示IronPDF 中的所有頁面索引均採用從零開始的編號。 (您的文件第 1 頁對應索引 0,第 2 頁對應索引 1,依此類推。

如何從 PDF 中擷取單一頁面?

copyPage(int pageIndex) 方法會從 PdfDocument 中擷取一頁,並將其作為新的、獨立的 PdfDocument 返回。 原始文件未作修改。 pageIndex 參數採用零起始計數:傳入 0 代表第一頁,1 代表第二頁,依此類推。

當您的工作流程需要從批次生成的文件中擷取特定頁面(例如封面頁、簽名頁或單張發票)時,此方法便十分適用。

//:path=/static-assets/ironpdf-java/content-code-examples/how-to/java-split-pdf-tutorial/copy-single-page.java
import java.io.IOException;
import java.nio.file.Path;
import com.ironsoftware.IronPdf.License;
import com.ironsoftware.IronPdf.PdfDocument;

public class Main {
    public static void main(String[] args) throws IOException {
        // 在呼叫任何 IronPDF 方法之前,請先設定授權金鑰
        License.setLicenseKey("IronPDF-MYLICENSE-KEY-1EF01");

        // 從磁碟載入原始 PDF
        PdfDocument pdf = PdfDocument.fromFile(Path.of("source.pdf"));

        // Extract the third page (zero-based index 2) into a new document
        PdfDocument thirdPage = pdf.copyPage(2);

        // 將擷取的頁面儲存為獨立的 PDF 檔案
        thirdPage.saveAs(Path.of("third-page.pdf"));
    }
}
//:path=/static-assets/ironpdf-java/content-code-examples/how-to/java-split-pdf-tutorial/copy-single-page.java
import java.io.IOException;
import java.nio.file.Path;
import com.ironsoftware.IronPdf.License;
import com.ironsoftware.IronPdf.PdfDocument;

public class Main {
    public static void main(String[] args) throws IOException {
        // 在呼叫任何 IronPDF 方法之前,請先設定授權金鑰
        License.setLicenseKey("IronPDF-MYLICENSE-KEY-1EF01");

        // 從磁碟載入原始 PDF
        PdfDocument pdf = PdfDocument.fromFile(Path.of("source.pdf"));

        // Extract the third page (zero-based index 2) into a new document
        PdfDocument thirdPage = pdf.copyPage(2);

        // 將擷取的頁面儲存為獨立的 PDF 檔案
        thirdPage.saveAs(Path.of("third-page.pdf"));
    }
}
JAVA

回傳的 PdfDocument 與原始內容完全無關。 儲存前,您可以進行進一步的格式調整、添加註解,或與其他文件合併。

如何從 PDF 中擷取特定頁碼範圍?

copyPages(int fromIndex, int toIndex) 方法會擷取連續的頁面範圍,並將其作為新的 PdfDocument 傳回。 fromIndextoIndex 皆為從零開始且包含邊界的:若對十頁的文件傳入 copyPages(1, 4),將提取第 2、3、4 和 5 頁(索引 1 至 4)。

頁面範圍擷取適用於以下情境:從多章節報告中提取單一章節、擷取多頁附錄,或從匯出為 PDF 的簡報中分離出一組投影片。

//:path=/static-assets/ironpdf-java/content-code-examples/how-to/java-split-pdf-tutorial/copy-page-range.java
import java.io.IOException;
import java.nio.file.Path;
import com.ironsoftware.IronPdf.License;
import com.ironsoftware.IronPdf.PdfDocument;

public class Main {
    public static void main(String[] args) throws IOException {
        // 在呼叫任何 IronPDF 方法之前,請先設定授權金鑰
        License.setLicenseKey("IronPDF-MYLICENSE-KEY-1EF01");

        // Load a multi-page source PDF
        PdfDocument pdf = PdfDocument.fromFile(Path.of("multi-page-report.pdf"));

        // Extract pages 2 through 5 (zero-based indexes 1 through 4, inclusive)
        PdfDocument chapter = pdf.copyPages(1, 4);

        // Save the extracted page range as a standalone document
        chapter.saveAs(Path.of("chapter-pages-2-to-5.pdf"));
    }
}
//:path=/static-assets/ironpdf-java/content-code-examples/how-to/java-split-pdf-tutorial/copy-page-range.java
import java.io.IOException;
import java.nio.file.Path;
import com.ironsoftware.IronPdf.License;
import com.ironsoftware.IronPdf.PdfDocument;

public class Main {
    public static void main(String[] args) throws IOException {
        // 在呼叫任何 IronPDF 方法之前,請先設定授權金鑰
        License.setLicenseKey("IronPDF-MYLICENSE-KEY-1EF01");

        // Load a multi-page source PDF
        PdfDocument pdf = PdfDocument.fromFile(Path.of("multi-page-report.pdf"));

        // Extract pages 2 through 5 (zero-based indexes 1 through 4, inclusive)
        PdfDocument chapter = pdf.copyPages(1, 4);

        // Save the extracted page range as a standalone document
        chapter.saveAs(Path.of("chapter-pages-2-to-5.pdf"));
    }
}
JAVA

若原始文件的頁數少於要求的 toIndex,IronPDF 將拋出例外。 處理頁數可能變動的文件時,請在呼叫 copyPages 之前先檢查 pdf.getPageCount()

如何將 PDF 分割成兩個文件?

splitBy(int splitAfterPageIndex) 方法會在分隔處分割 PDF 檔案,並返回一個包含精確兩個元素的 List<PdfDocument>。 第一個元素包含索引 0 至 splitAfterPageIndex(含)之間的頁面。 第二部分包含從 splitAfterPageIndex + 1 到文件結尾的所有剩餘頁面。

例如,對一份十頁的文件呼叫 splitBy(2) 會產生:

  • parts.get(0):第 0、1、2 頁(前三頁)
  • parts.get(1):第 3 頁至第 9 頁(其餘七頁)

此方法適用於在已知分界處分割文件:例如將封面與正文分離、在分節符處分割文件,或將批次檔切分為兩部分以進行並行處理。

//:path=/static-assets/ironpdf-java/content-code-examples/how-to/java-split-pdf-tutorial/split-by-boundary.java
import java.io.IOException;
import java.nio.file.Path;
import java.util.List;
import com.ironsoftware.IronPdf.License;
import com.ironsoftware.IronPdf.PdfDocument;

public class Main {
    public static void main(String[] args) throws IOException {
        // 在呼叫任何 IronPDF 方法之前,請先設定授權金鑰
        License.setLicenseKey("IronPDF-MYLICENSE-KEY-1EF01");

        // 從磁碟載入原始 PDF
        PdfDocument pdf = PdfDocument.fromFile(Path.of("source.pdf"));

        // Split after page index 2 -- first part: pages 0-2, second part: pages 3 to end
        List<PdfDocument> parts = pdf.splitBy(2);

        // Save the first part (pages 0 through 2)
        parts.get(0).saveAs(Path.of("part-one.pdf"));

        // Save the second part (pages 3 through end)
        parts.get(1).saveAs(Path.of("part-two.pdf"));
    }
}
//:path=/static-assets/ironpdf-java/content-code-examples/how-to/java-split-pdf-tutorial/split-by-boundary.java
import java.io.IOException;
import java.nio.file.Path;
import java.util.List;
import com.ironsoftware.IronPdf.License;
import com.ironsoftware.IronPdf.PdfDocument;

public class Main {
    public static void main(String[] args) throws IOException {
        // 在呼叫任何 IronPDF 方法之前,請先設定授權金鑰
        License.setLicenseKey("IronPDF-MYLICENSE-KEY-1EF01");

        // 從磁碟載入原始 PDF
        PdfDocument pdf = PdfDocument.fromFile(Path.of("source.pdf"));

        // Split after page index 2 -- first part: pages 0-2, second part: pages 3 to end
        List<PdfDocument> parts = pdf.splitBy(2);

        // Save the first part (pages 0 through 2)
        parts.get(0).saveAs(Path.of("part-one.pdf"));

        // Save the second part (pages 3 through end)
        parts.get(1).saveAs(Path.of("part-two.pdf"));
    }
}
JAVA

請注意splitBy 總是會返回一個精確包含兩個元素的清單。 若 splitAfterPageIndex 等於文件的最後一頁索引,則第二個元素將為一個空文件。 (當分割點是動態計算時,請根據 pdf.getPageCount() - 1 驗證分割邊界。)}]

在 Java 中分割 PDF 的下一步該怎麼做?

IronPDF 的 copyPagessplitBy 方法涵蓋了 Java 環境中所有 PDF 分割需求,從單頁擷取、範圍分割到邊界分割皆能應對。 每個方法都會傳回一個獨立的 PdfDocument,可供進一步處理或立即儲存。

若要繼續在 Java 中處理 PDF 文件,請參考以下相關資源:

立即開始免費試用,將 PDF 分割功能加入您的 Java 工作流程。 如需購買用於生產環境的授權,請查看授權選項

常見問題

如何使用 IronPDF 在 Java 中分割 PDF 檔案?

請使用PDF/A格式 PdfDocument.fromFile(),然後呼叫 copyPage(index) 來擷取單一頁面, copyPages(from, to) 來擷取範圍,或 splitBy(index) 將文件分割為兩部分。將每個結果儲存為 saveAs().

copyPage、copyPages 和 splitBy 之間有何區別?

copyPage(index) 根據零起始索引提取單一頁面。 copyPages(fromIndex, toIndex) 擷取包含起始與結束頁碼的連續範圍。 splitBy(index) 在邊界處分割文件,並返回一個 List<PdfDocument> 包含兩個元素的陣列:索引 0 至邊界索引的頁面,以及所有剩餘頁面。

IronPDF 中的頁面索引是從 0 開始還是從 1 開始?

IronPDF 中的頁面索引採用零起始制。文件的第一頁索引為 0,第二頁為 1,依此類推。此規則適用於 copyPage, copyPages,以及 splitBy.

splitBy 會傳回什麼?

splitBy(splitAfterPageIndex) 返回一個 List<PdfDocument> 包含精確兩個元素的物件。第一個元素包含第 0 頁至分割索引(含)的所有頁面。第二個元素包含其餘所有頁面。若分割索引為最後一頁,則第二個元素將為一個空文件。

using IronPDF for Java 在 Java 中分割 PDF 的先決條件有哪些?

您需要 Java 8 或更高版本,並將 IronPDF 函式庫作為 Maven 或 Gradle 依賴項加入,同時在 License.setLicenseKey()

如何在 Java 中從 PDF 檔案中擷取第 2 頁至第 5 頁?

請使用 pdf.co/pyPages(1, 4) 來擷取第 2 頁至第 5 頁。IronPDF 採用從 0 開始的索引,因此第 2 頁的索引為 1,第 5 頁的索引為 4。兩個範圍均包含起始頁。將結果儲存為 saveAs().

Curtis Chau
技術撰稿人

Curtis Chau 擁有卡爾頓大學(Carleton University)的電腦科學學士學位,專精於前端開發,並精通 Node.js、TypeScript、JavaScript 及 React。他熱衷於打造直觀且美觀的用戶介面,喜歡運用現代框架,並創建結構完善、視覺上吸引人的手冊。

除了開發工作之外,Curtis 對物聯網(IoT)抱有濃厚興趣,致力於探索整合硬體與軟體的創新方法。閒暇時,他喜歡玩遊戲和開發 Discord 機器人,將對科技的熱愛與創意相結合。

準備開始了嗎?
版本: 2026.5 just released
Still Scrolling Icon

還在捲動嗎?

想要快速證明?
執行範例 觀看您的 HTML 變成 PDF。