Split a PDF File using Java

Andrew Wilson
2 min readFeb 10, 2021

In daily work, when we are manipulating a large PDF file, we can split it into multiple small files to make the reading or editing easier. Today I’m going to introduce two ways to split a PDF file by using Free Spire.PDF for Java.

  1. Split every page of the PDF into a separate file.
  2. Split specific page ranges of the PDF into multiple files.

Installation
Method 1: Download the Free Spire.PDF for Java and unzip it.Then add the Spire.Pdf.jar file to your project as dependency.

Method 2: You can also add the jar dependency to maven project by adding the following configurations to the pom.xml.

<repositories>
<repository>
<id>com.e-iceblue</id>
<name>e-iceblue</name>
<url>http://repo.e-iceblue.com/nexus/content/groups/public/</url>
</repository>
</repositories>
<dependencies>
<dependency>
<groupId>e-iceblue</groupId>
<artifactId>spire.pdf.free</artifactId>
<version>3.9.0</version>
</dependency>
</dependencies>

The original PDF file (including 5 pages):

【Example 1】Split every page of the PDF into a separate file:
Split the original PDF file into 5 small documents

import com.spire.pdf.*;

public class SplitPDF {
public static void main(String[] args)
{

//Load the PDF file
PdfDocument doc = new PdfDocument();
doc.loadFromFile("input1.pdf");

//Split every page of the PDF into a separate file
doc.split("output/splitDocument-{0}.pdf", 0);
doc.close();
}
}

【Example 2】Split specific page ranges of the PDF into multiple files:
Split pages 1–2 into a PDF file, and split pages 3–5 into another PDF file.

import com.spire.pdf.*;
import com.spire.pdf.graphics.PdfMargins;

import java.awt.geom.Point2D;

public class SplitPDF {
public static void main(String[] args)
{

//Load the PDF file
PdfDocument doc = new PdfDocument();
doc.loadFromFile("input1.pdf");

//Create a new PDF file
PdfDocument newDoc1 = new PdfDocument();

PdfPageBase page;

//Add 2 pages to the new PDF, and draw the content of page 1-2 of the original PDF to the newly added pages
for(int i = 0;i<2;i++)
{
page = newDoc1.getPages().add(doc.getPages().get(i).getSize(), new PdfMargins(0));
doc.getPages().get(i).createTemplate().draw(page, new Point2D.Float(0,0));
}

//Save the result file
newDoc1.saveToFile("split/Doc1.pdf");

//Create a new PDF file
PdfDocument newDoc2 = new PdfDocument();

//Add 3 pages to the new PDF, and draw the content of page 3-5 of the original PDF to the newly added pages
for(int i = 2;i<5;i++)
{
page = newDoc2.getPages().add(doc.getPages().get(i).getSize(), new PdfMargins(0));
doc.getPages().get(i).createTemplate().draw(page, new Point2D.Float(0,0));
}

//Save the result file
newDoc2.saveToFile("split/Doc2.pdf");
}
}

--

--

Andrew Wilson

Explore C#, Java and Python solutions for processing Word/Excel/PowerPoint/PDF files.