如何在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通过PdfDocument类上的一致API处理所有三种拆分模式。 用于从HTML生成PDF或加载现有文件的同一类公开页面提取方法,因此拆分自然地集成到任何现有的IronPDF工作流程中。 有关设置和依赖项配置,请参阅快速入门概述。
IronPDF中的所有页面索引都是从零开始的。 如果源文档有十页,有效索引从0到9。这适用于splitBy的边界参数。 传递超出范围的索引将在运行时抛出异常,因此在处理可变长度的文档时,请根据pdf.getPageCount()验证页面计数。
如何在Java中拆分PDF
- 安装Java库以拆分PDF
- 使用PdfDocument类加载源PDF
- 使用
copyPage将单个页面提取到新文档中 - 使用
copyPages提取一范围的页面 - 使用
splitBy在特定页面边界处分割PDF - 使用
saveAs保存每个结果文档
开始之前我需要什么?
在拆分PDF之前,请确认IronPDF已经添加到您的Java项目中,作为Maven或Gradle依赖项。 该库需要Java 8或更高版本。 将IronPDF工件从Maven Central添加到您的构建文件中:
<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中合并PDF:将多个PDF文件或提取的部分合并为一个文档
- 在Java中删除PDF页面:无需提取其余文档即可从现有PDF中删除不需要的页面
- 在Java中压缩PDF:在存储或传输之前减少拆分文档的文件大小
- 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()设置有效的许可证密钥。
如何在Java中提取PDF的第2到第5页?
使用pdf.copyPages(1, 4)提取第2到第5页。IronPDF使用从零开始的索引,因此第2页是索引1,第5页是索引4。两个边界为包含边界。用saveAs()保存结果。


