如何在Java中分割PDF

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

在Java中分割PDF很簡單,IronPDF提供PdfDocument類上,可以用來提取單個頁面、抽取頁面範圍或在邊界處分割文件。 每個方法都會返回一個新的PdfDocument,您可以獨立於原件保存。

快速開始:在Java中分割PDF

  1. 透過Maven或Gradle安裝 IronPDF for Java
  2. 使用License.setLicenseKey()設置您的授權金鑰
  3. 使用PdfDocument.fromFile()載入PDF
  4. 使用copyPage()提取單個頁面
  5. 使用saveAs()保存結果
 :title=Quickstart
//: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 {
        // Set the license key before calling any IronPDF methods
        License.setLicenseKey("IRONPDF-MYLICENSE-KEY-1EF01");

        // Load the source PDF from disk
        PdfDocument pdf = PdfDocument.fromFile(Path.of("source.pdf"));

        // Extract the first page (zero-based index 0) into a new document
        PdfDocument firstPage = pdf.copyPage(0);

        // Save the extracted page as a standalone PDF
        firstPage.saveAs(Path.of("page-one.pdf"));
    }
}
 :title=Quickstart
//: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 {
        // Set the license key before calling any IronPDF methods
        License.setLicenseKey("IRONPDF-MYLICENSE-KEY-1EF01");

        // Load the source PDF from disk
        PdfDocument pdf = PdfDocument.fromFile(Path.of("source.pdf"));

        // Extract the first page (zero-based index 0) into a new document
        PdfDocument firstPage = pdf.copyPage(0);

        // Save the extracted page as a standalone PDF
        firstPage.saveAs(Path.of("page-one.pdf"));
    }
}
JAVA

程式化地生成文件時,分割PDF是一個常見需求。 生成的一個報告可能需要在分發前拆分成單獨的部分。 歸檔工作流通常需要將每個章節或發票儲存為單獨的文件。在選擇性共享場景中,如只向客戶發送特定頁面的範圍,提取所需的頁面比發送整個文件更有利。

IronPDF通過一個一致的API在PdfDocument類上處理所有三種分割模式。 用來從HTML生成PDF或載入現有文件的相同類,公開了頁面提取方法,因此分割自然整合到任何現有IronPDF工作流中。 有關設置和依賴項配置的資料,請參閱入門概述

IronPDF中的所有頁面索引都是從零開始的。 如果您的原件文件有十頁,有效索引範圍從0到9。這適用於splitBy的邊界參數。 傳入一個超出範圍的索引將在運行時拋出異常,因此在處理可變長度的文件時,請對頁面計數進行驗證。

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

在分割PDFs之前,請確認已將IronPDF新增到您的Java專案中作為Maven或Gradle的依賴項。 程式庫需要Java 8或更高版本。 從Maven Central新增IronPDF artifact到您的構建文件中:

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

對於Gradle專案,將等效的build.gradle中。 完整的依賴項和配置指導可在入門概述中找到。

需要有效的授權金鑰。 在應用啟動時設置它,然後再調用任何IronPDF方法:

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

有關授權選項和試用金鑰,請存取授權金鑰指南

提示IronPDF中的全部頁面索引使用從0開始的編號。 文件的第1頁為索引0,第2頁為索引1,依此類推。

如何從PDF中提取單個頁面?

PdfDocument返回。 原始文件不會被修改。 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 {
        // Set the license key before calling any IronPDF methods
        License.setLicenseKey("IRONPDF-MYLICENSE-KEY-1EF01");

        // Load the source PDF from disk
        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);

        // Save the extracted page as a standalone 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 {
        // Set the license key before calling any IronPDF methods
        License.setLicenseKey("IRONPDF-MYLICENSE-KEY-1EF01");

        // Load the source PDF from disk
        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);

        // Save the extracted page as a standalone PDF
        thirdPage.saveAs(Path.of("third-page.pdf"));
    }
}
JAVA

返回的PdfDocument完全獨立於源文件。 在保存前,您可以進一步轉換,新增註釋,或與其他文件合併。

Icon Quote related to 如何從PDF中提取單個頁面?

我最喜歡的程式庫是IronPDF。它允許快速高效地操作PDF文件。它還有許多有價值的功能,例如導出到PDF/A格式和數位簽署PDF文件。

Milan Jovanovic related to 如何從PDF中提取單個頁面?

Milan Jovanovic

Microsoft MVP

查看案例研究
Icon Quote related to 如何從PDF中提取單個頁面?

IronOCR意味著我們每年可以從手動處理中節省$40,000,同時提高生產力,釋放資源以進行高影響的任務。我會強烈推薦它。

Brent Matzelle related to 如何從PDF中提取單個頁面?

Brent Matzelle

首席技術官,OPYN

查看案例研究
Icon Quote related to 如何從PDF中提取單個頁面?

IronSuite在我們的運營中扮演著至關重要的角色。這些工具增加了包括建立平面圖和改善庫存管理在內的業務效率。

David Jones related to 如何從PDF中提取單個頁面?

David Jones

首席軟體工程師,Agorus Build

查看案例研究

如何從PDF中提取一個頁面範圍?

PdfDocument返回。 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 {
        // Set the license key before calling any IronPDF methods
        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 {
        // Set the license key before calling any IronPDF methods
        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將拋出異常。 在調用pdf.getPageCount(),當操作的文件頁面數可能會有所變化時。

如何將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 {
        // Set the license key before calling any IronPDF methods
        License.setLicenseKey("IRONPDF-MYLICENSE-KEY-1EF01");

        // Load the source PDF from disk
        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 {
        // Set the license key before calling any IronPDF methods
        License.setLicenseKey("IRONPDF-MYLICENSE-KEY-1EF01");

        // Load the source PDF from disk
        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的splitBy方法涵蓋了Java中PDF分割的全範圍需求,從單頁提取到基於範圍的分割,甚至到基於邊界的分割。 每個方法都返回一個獨立的PdfDocument,準備進一步操作或立即保存。

要繼續在Java中處理PDF文件,請探索這些相關資源:

開始您的免費試用,以將PDF分割新增到您的Java工作流程中。 若要購買用於生產的授權,請查看授權選項

常見問題

如何在Java中使用IronPDF拆分PDF?

使用PdfDocument.fromFile()載入PDF,然後調用copyPage(index)來提取單個頁面,copyPages(from, to)來提取範圍,或splitBy(index)來將文件分為兩部分。用saveAs()保存每個結果。

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

copyPage(index)通過零為基的索引提取單個頁面。copyPages(fromIndex, toIndex)提取連續的範圍,兩個邊界都是含在內的。splitBy(index)在邊界處分割文件並返回一個包含兩個元素的List<PdfDocument>:頁面0至邊界索引和所有剩餘頁面。

IronPDF中的頁面索引是基於零還是基於一?

IronPDF中的頁面索引是基於零的。文件的第一頁是索引0,第二頁是索引1,以此類推。這適用於copyPage, copyPages, 和splitBy

splitBy返回什麼?

splitBy(splitAfterPageIndex)返回一個包含兩個元素的List<PdfDocument>。第一個元素包含頁面0到分割索引(含在內)。第二個元素包含所有剩餘的頁面。如果分割索引是最後一頁,第二個元素將是個空文件。

在Java中使用IronPDF拆分PDF的先決條件是什麼?

您需要Java 8或更高版本,IronPDF程式庫須作為Maven或Gradle依賴項加入,並且在任何IronPDF呼叫之前,必須用License.setLicenseKey()設置有效的授權金鑰。

如何從PDF中提取第2到第5頁在Java中?

使用pdf.copyPages(1, 4)提取第2到第5頁。IronPDF使用基於零的索引,因此第2頁是索引1,第5頁是索引4。兩個邊界都是含在內的。用saveAs()保存結果。

Darrius Serrant
全端軟體工程師(WebOps)

Darrius Serrant擁有邁阿密大學的電腦科學學士學位,並在Iron Software擔任全端WebOps行銷工程師。從小就對程式設計有興趣,他認為計算既神秘又易於理解,成為創意和問題解決的完美媒介。

在Iron Software,Darrius喜歡創造新事物並簡化複雜的概念,使其更易於理解。作為我們的常駐開發人員之一,他還志願教學,將他的專業知識傳授給下一代。

對Darrius來說,他的工作是有意義的,因為它有價值且對社會有真正的影響。

準備好開始了嗎?
版本: 2026.6 剛剛發布
Still Scrolling Icon

還在滾動嗎?

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