org.pdfbox.util

Class Splitter


public class Splitter
extends java.lang.Object

Split a document into several other documents.
Version:
$Revision: 1.7 $
Authors:
Mario Ivankovits (mario@ops.co.at)
Ben Litchfield

Field Summary

protected PDDocument
currentDocument
The current PDF document that contains the splitted page.
protected int
pageNumber
The current page number that we are processing, zero based.
protected PDDocument
pdfDocument
The source PDF document.

Method Summary

protected void
createNewDocument()
Create a new document to write the splitted contents to.
protected void
createNewDocumentIfNecessary()
Interface method, you can control where a document gets split by implementing this method.
int
getSplitAtPage()
This will return how many pages each split document will contain.
protected boolean
isNewDocNecessary()
Check if it is necessary to create a new document.
protected void
processNextPage(PDPage page)
Interface to start processing a new page.
protected void
processPages(List pages)
Interface method to handle the start of the page processing.
void
setSplitAtPage(int split)
This will tell the splitting algorithm where to split the pages.
List
split(PDDocument document)
This will take a document and split into several other documents.

Field Details

currentDocument

protected PDDocument currentDocument
The current PDF document that contains the splitted page.

pageNumber

protected int pageNumber
The current page number that we are processing, zero based.

pdfDocument

protected PDDocument pdfDocument
The source PDF document.

Method Details

createNewDocument

protected void createNewDocument()
            throws IOException
Create a new document to write the splitted contents to.

createNewDocumentIfNecessary

protected void createNewDocumentIfNecessary()
            throws IOException
Interface method, you can control where a document gets split by implementing this method. By default a split occurs at every page. If you wanted to split based on some complex logic then you could override this method. For example. protected void createNewDocumentIfNecessary() { if( isPrime( pageNumber ) ) { super.createNewDocumentIfNecessary(); } }

getSplitAtPage

public int getSplitAtPage()
This will return how many pages each split document will contain.
Returns:
The split parameter.

isNewDocNecessary

protected boolean isNewDocNecessary()
Check if it is necessary to create a new document.
Returns:
true If a new document should be created.

processNextPage

protected void processNextPage(PDPage page)
            throws IOException
Interface to start processing a new page.
Parameters:
page - The page that is about to get processed.

processPages

protected void processPages(List pages)
            throws IOException
Interface method to handle the start of the page processing.
Parameters:
pages - The list of pages from the source document.

setSplitAtPage

public void setSplitAtPage(int split)
This will tell the splitting algorithm where to split the pages. The default is 1, so every page will become a new document. If it was to then each document would contain 2 pages. So it the source document had 5 pages it would split into 3 new documents, 2 documents containing 2 pages and 1 document containing one page.
Parameters:
split - The number of pages each split document should contain.

split

public List split(PDDocument document)
            throws IOException
This will take a document and split into several other documents.
Parameters:
document - The document to split.
Returns:
A list of all the split documents.