Splitting PDF Documents in Java Using Page Range Extraction

Dependency Configuration

To process PDF files, you need to include the Free Spire.PDF library in your project. You can either download the JAR file directly or configure it through Maven.

Maven configuration for pom.xml:

<repositories>
    <repository>
        <id>com.e-iceblue</id>
        <url>http://repo.e-iceblue.cn/repository/maven-public/</url>
    </repository>
</repositories>
<dependencies>
    <dependency>
        <groupId>e-iceblue</groupId>
        <artifactId>spire.pdf.free</artifactId>
        <version>2.6.3</version>
    </dependency>
</dependencies>

Method 1: Splitting Each Page into Separate Files

This approach extracts every page from the source PDF and saves it as an individual document.

import com.spire.pdf.*;

public class SeparatePages {
    public static void main(String[] args) {
        // Initialize PDF document object
        PdfDocument sourcePdf = new PdfDocument();
        sourcePdf.loadFromFile("sample.pdf");
        
        // Generate individual PDF files for each page
        sourcePdf.split("output/page-{0}.pdf", 0);
        sourcePdf.close();
    }
}

Method 2: Custom Page Range Extraction

This method allows you to create new PDFs with specific page ranges from the original document.

import com.spire.pdf.*;
import com.spire.pdf.graphics.PdfMargins;
import java.awt.geom.Point2D;

public class CustomRangeSplit {
    public static void main(String[] args) {
        // Load the source document
        PdfDocument originalPdf = new PdfDocument();
        originalPdf.loadFromFile("sample.pdf");
        
        // Create first output document with pages 0-1
        PdfDocument firstOutput = new PdfDocument();
        for (int pageIndex = 0; pageIndex < 2; pageIndex++) {
            PdfPageBase sourcePage = originalPdf.getPages().get(pageIndex);
            PdfPageBase newPage = firstOutput.getPages().add(
                sourcePage.getSize(), 
                new PdfMargins(0)
            );
            sourcePage.createTemplate().draw(newPage, new Point2D.Float(0, 0));
        }
        firstOutput.saveToFile("output/document_part1.pdf");
        
        // Create second output document with pages 2-4
        PdfDocument secondOutput = new PdfDocument();
        for (int pageIndex = 2; pageIndex < 5; pageIndex++) {
            PdfPageBase sourcePage = originalPdf.getPages().get(pageIndex);
            PdfPageBase newPage = secondOutput.getPages().add(
                sourcePage.getSize(), 
                new PdfMargins(0)
            );
            sourcePage.createTemplate().draw(newPage, new Point2D.Float(0, 0));
        }
        secondOutput.saveToFile("output/document_part2.pdf");
        
        originalPdf.close();
    }
}

Both methods provide different approaches to PDF document partitioning. The first method is ideal when you need individual pages as separate files, while the second method offers flexibility for creating documents with custom page groupings.

Tags: java PDF Document Processing Split PDF Free Spire.PDF

Posted on Sat, 09 May 2026 17:09:27 +0000 by James Bond 007