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.