如何在Java中分割PDF
在Java中分割PDF很簡單,IronPDF提供PdfDocument類上,可以用來提取單個頁面、抽取頁面範圍或在邊界處分割文件。 每個方法都會返回一個新的PdfDocument,您可以獨立於原件保存。
快速開始:在Java中分割PDF
- 透過Maven或Gradle安裝 IronPDF for Java
- 使用
License.setLicenseKey()設置您的授權金鑰 - 使用
PdfDocument.fromFile()載入PDF - 使用
copyPage()提取單個頁面 - 使用
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"));
}
}
程式化地生成文件時,分割PDF是一個常見需求。 生成的一個報告可能需要在分發前拆分成單獨的部分。 歸檔工作流通常需要將每個章節或發票儲存為單獨的文件。在選擇性共享場景中,如只向客戶發送特定頁面的範圍,提取所需的頁面比發送整個文件更有利。
IronPDF通過一個一致的API在PdfDocument類上處理所有三種分割模式。 用來從HTML生成PDF或載入現有文件的相同類,公開了頁面提取方法,因此分割自然整合到任何現有IronPDF工作流中。 有關設置和依賴項配置的資料,請參閱入門概述。
IronPDF中的所有頁面索引都是從零開始的。 如果您的原件文件有十頁,有效索引範圍從0到9。這適用於splitBy的邊界參數。 傳入一個超出範圍的索引將在運行時拋出異常,因此在處理可變長度的文件時,請對頁面計數進行驗證。
如何在Java中分割PDF
- 安裝Java程式庫以分割PDFs
- 使用PdfDocument類載入源PDF
- 使用
copyPage將單個頁面提取到新文件中 - 使用
copyPages提取一個頁面範圍 - 使用
splitBy將PDF在特定頁面邊界處分割 - 使用
saveAs保存每個生成的文件
開始之前我需要什麼準備?
在分割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>
對於Gradle專案,將等效的build.gradle中。 完整的依賴項和配置指導可在入門概述中找到。
需要有效的授權金鑰。 在應用啟動時設置它,然後再調用任何IronPDF方法:
License.setLicenseKey("IRONPDF-MYLICENSE-KEY-1EF01");
License.setLicenseKey("IRONPDF-MYLICENSE-KEY-1EF01");
有關授權選項和試用金鑰,請存取授權金鑰指南。
如何從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"));
}
}
返回的PdfDocument完全獨立於源文件。 在保存前,您可以進一步轉換,新增註釋,或與其他文件合併。
如何從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"));
}
}
如果源文件的頁面數少於請求的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"));
}
}
splitBy總是返回一個包含恰好兩個元素的列表。 如果splitAfterPageIndex等於文件的最後一頁索引,那麼第二個元素將是一個空文件。 在分割點是動態計算時,根據pdf.getPageCount() - 1驗證分割邊界。在Java中分割PDF的下一步是什麼?
IronPDF的splitBy方法涵蓋了Java中PDF分割的全範圍需求,從單頁提取到基於範圍的分割,甚至到基於邊界的分割。 每個方法都返回一個獨立的PdfDocument,準備進一步操作或立即保存。
要繼續在Java中處理PDF文件,請探索這些相關資源:
- 在Java中合併PDFs:將多個PDF文件或提取的部分合併為單一文件
- 在Java中刪除PDF頁面:從現有的PDF中移除不需要的頁面而不提取其餘部分
- 在Java中壓縮PDFs:在儲存或傳輸前減小分割文件的文件大小
- Java PDF教程:針對常見PDF工作流程的其他端到端範例
- IronPDF for Java範例:複製和粘貼整個IronPDF Java API的程式碼范例
常見問題
如何在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()保存結果。


