Package org.apache.pdfbox.multipdf
Class Splitter
- java.lang.Object
-
- org.apache.pdfbox.multipdf.Splitter
-
public class Splitter extends java.lang.Object
Split a document into several other documents.
-
-
Field Summary
Fields Modifier and Type Field Description private PDDocument
currentDestinationDocument
private int
currentPageNumber
private java.util.List<PDDocument>
destinationDocuments
private int
endPage
private MemoryUsageSetting
memoryUsageSetting
private PDDocument
sourceDocument
private int
splitLength
private int
startPage
-
Constructor Summary
Constructors Constructor Description Splitter()
-
Method Summary
All Methods Instance Methods Concrete Methods Modifier and Type Method Description protected PDDocument
createNewDocument()
Create a new document to write the split contents to.private void
createNewDocumentIfNecessary()
Helper method for creating new documents at the appropriate pages.protected PDDocument
getDestinationDocument()
The source PDF document.MemoryUsageSetting
getMemoryUsageSetting()
protected PDDocument
getSourceDocument()
The source PDF document.private void
processAnnotations(PDPage imported)
protected void
processPage(PDPage page)
Interface to start processing a new page.private void
processPages()
Interface method to handle the start of the page processing.void
setEndPage(int end)
This will set the end page.void
setMemoryUsageSetting(MemoryUsageSetting memoryUsageSetting)
Set the memory setting.void
setSplitAtPage(int split)
This will tell the splitting algorithm where to split the pages.void
setStartPage(int start)
This will set the start page.java.util.List<PDDocument>
split(PDDocument document)
This will take a document and split into several other documents.protected boolean
splitAtPage(int pageNumber)
Check if it is necessary to create a new document.
-
-
-
Field Detail
-
sourceDocument
private PDDocument sourceDocument
-
currentDestinationDocument
private PDDocument currentDestinationDocument
-
splitLength
private int splitLength
-
startPage
private int startPage
-
endPage
private int endPage
-
destinationDocuments
private java.util.List<PDDocument> destinationDocuments
-
currentPageNumber
private int currentPageNumber
-
memoryUsageSetting
private MemoryUsageSetting memoryUsageSetting
-
-
Method Detail
-
getMemoryUsageSetting
public MemoryUsageSetting getMemoryUsageSetting()
- Returns:
- the current memory setting.
-
setMemoryUsageSetting
public void setMemoryUsageSetting(MemoryUsageSetting memoryUsageSetting)
Set the memory setting.- Parameters:
memoryUsageSetting
-
-
split
public java.util.List<PDDocument> split(PDDocument document) throws java.io.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.
- Throws:
java.io.IOException
- If there is an IOError
-
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 two then each document would contain 2 pages. If 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.- Throws:
java.lang.IllegalArgumentException
- if the page is smaller than one.
-
setStartPage
public void setStartPage(int start)
This will set the start page.- Parameters:
start
- the 1-based start page- Throws:
java.lang.IllegalArgumentException
- if the start page is smaller than one.
-
setEndPage
public void setEndPage(int end)
This will set the end page.- Parameters:
end
- the 1-based end page- Throws:
java.lang.IllegalArgumentException
- if the end page is smaller than one.
-
processPages
private void processPages() throws java.io.IOException
Interface method to handle the start of the page processing.- Throws:
java.io.IOException
- If an IO error occurs.
-
createNewDocumentIfNecessary
private void createNewDocumentIfNecessary() throws java.io.IOException
Helper method for creating new documents at the appropriate pages.- Throws:
java.io.IOException
- If there is an error creating the new document.
-
splitAtPage
protected boolean splitAtPage(int pageNumber)
Check if it is necessary to create a new document. 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 splitAtPage() { // will split at pages with prime numbers only return isPrime(pageNumber); }
- Parameters:
pageNumber
- the 0-based page number to be checked as splitting page- Returns:
- true If a new document should be created.
-
createNewDocument
protected PDDocument createNewDocument() throws java.io.IOException
Create a new document to write the split contents to.- Returns:
- the newly created PDDocument.
- Throws:
java.io.IOException
- If there is an problem creating the new document.
-
processPage
protected void processPage(PDPage page) throws java.io.IOException
Interface to start processing a new page.- Parameters:
page
- The page that is about to get processed.- Throws:
java.io.IOException
- If there is an error creating the new document.
-
processAnnotations
private void processAnnotations(PDPage imported) throws java.io.IOException
- Throws:
java.io.IOException
-
getSourceDocument
protected final PDDocument getSourceDocument()
The source PDF document.- Returns:
- the pdf to be split
-
getDestinationDocument
protected final PDDocument getDestinationDocument()
The source PDF document.- Returns:
- current destination pdf
-
-