如何在 Java 中分割 PDF 檔案
使用 IronPDF for Java 在 Java 中分割 PDF 非常簡單,該類別提供 copyPages 及 splitBy 方法,可分別用於擷取單一頁面、提取頁面範圍,或於指定分隔點分割文件。 每個方法都會傳回一個新的 PdfDocument,您應將其獨立於原始物件之外另行儲存。
快速入門:在 Java 中分割 PDF 檔案
- 透過 Maven 或 Gradle 安裝 IronPDF for Java
- 使用
License.setLicenseKey()設定您的授權金鑰 - 載入 PDF 檔案
PdfDocument.fromFile() - 使用
copyPage()來擷取單一頁面 - 將結果儲存為
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");
有關授權選項與試用金鑰,請參閱授權金鑰指南。
如何從 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"));
}
}
回傳的 PdfDocument 與原始內容完全無關。 儲存前,您可以進行進一步的格式調整、添加註解,或與其他文件合併。
如何從 PDF 中擷取特定頁碼範圍?
copyPages(int fromIndex, int toIndex) 方法會擷取連續的頁面範圍,並將其作為新的 PdfDocument 傳回。 fromIndex 與 toIndex 皆為從零開始且包含邊界的:若對十頁的文件傳入 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"));
}
}
若原始文件的頁數少於要求的 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"));
}
}
splitBy 總是會返回一個精確包含兩個元素的清單。 若 splitAfterPageIndex 等於文件的最後一頁索引,則第二個元素將為一個空文件。 (當分割點是動態計算時,請根據 pdf.getPageCount() - 1 驗證分割邊界。)}]在 Java 中分割 PDF 的下一步該怎麼做?
IronPDF 的 copyPages 及 splitBy 方法涵蓋了 Java 環境中所有 PDF 分割需求,從單頁擷取、範圍分割到邊界分割皆能應對。 每個方法都會傳回一個獨立的 PdfDocument,可供進一步處理或立即儲存。
若要繼續在 Java 中處理 PDF 文件,請參考以下相關資源:
- 在 Java 中合併 PDF:將多個 PDF 檔案或擷取的片段合併為單一文件
- 在 Java 中刪除 PDF 頁面:從現有 PDF 中移除不需要的頁面,同時保留其餘內容
- 在 Java 中壓縮 PDF:在儲存或傳輸前縮小分割文件的大小
- Java PDF 教學:針對常見 PDF 工作流程的額外端到端範例
- IronPDF for Java 範例:完整 IronPDF Java API 的可直接複製貼上程式碼範例
常見問題
如何使用 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().


