- import java.io.FileOutputStream;
- import java.io.IOException;
- import java.util.ArrayList;
- import com.lowagie.text.Document;
- import com.lowagie.text.DocumentException;
- import com.lowagie.text.pdf.PdfCopy;
- import com.lowagie.text.pdf.PdfImportedPage;
- import com.lowagie.text.pdf.PdfReader;
- public class pdfOperate
- {
- private static final int N = 3 ;
- public static void main(String[] args)
- {
- String[] files = {"C://a.pdf" , "C://b.pdf" };
- String savepath = "C://temp.pdf" ;
- mergePdfFiles(files, savepath);
- partitionPdfFile("C://a.pdf" );
- }
- public static void mergePdfFiles(String[] files, String savepath)
- {
- try
- {
- Document document = new Document(new PdfReader(files[0 ]).getPageSize(1 ));
- PdfCopy copy = new PdfCopy(document, new FileOutputStream(savepath));
- document.open();
- for (int i=0 ; i<files.length; i++)
- {
- PdfReader reader = new PdfReader(files[i]);
- int n = reader.getNumberOfPages();
- for (int j=1 ; j<=n; j++)
- {
- document.newPage();
- PdfImportedPage page = copy.getImportedPage(reader, j);
- copy.addPage(page);
- }
- }
- document.close();
- } catch (IOException e) {
- e.printStackTrace();
- } catch (DocumentException e) {
- e.printStackTrace();
- }
- }
- public static void partitionPdfFile(String filepath)
- {
- Document document = null ;
- PdfCopy copy = null ;
- try
- {
- PdfReader reader = new PdfReader(filepath);
- int n = reader.getNumberOfPages();
- if (n < N)
- {
- System.out.println("The document does not have " + N + " pages to partition !" );
- return ;
- }
- int size = n/N;
- String staticpath = filepath.substring(0 , filepath.lastIndexOf("//" )+1 );
- String savepath = null ;
- ArrayList<String> savepaths = new ArrayList<String>();
- for (int i=1 ; i<=N; i++)
- {
- if (i < 10 )
- {
- savepath = filepath.substring(filepath.lastIndexOf("//" )+1 , filepath.length()-4 );
- savepath = staticpath + savepath + "0" + i + ".pdf" ;
- savepaths.add(savepath);
- }
- else
- {
- savepath = filepath.substring(filepath.lastIndexOf("//" )+1 , filepath.length()-4 );
- savepath = staticpath + savepath + i + ".pdf" ;
- savepaths.add(savepath);
- }
- }
- for (int i=0 ; i<N-1 ; i++)
- {
- document = new Document(reader.getPageSize(1 ));
- copy = new PdfCopy(document, new FileOutputStream(savepaths.get(i)));
- document.open();
- for (int j=size*i+1 ; j<=size*(i+1 ); j++)
- {
- document.newPage();
- PdfImportedPage page = copy.getImportedPage(reader, j);
- copy.addPage(page);
- }
- document.close();
- }
- document = new Document(reader.getPageSize(1 ));
- copy = new PdfCopy(document, new FileOutputStream(savepaths.get(N-1 )));
- document.open();
- for (int j=size*(N-1 )+1 ; j<=n; j++)
- {
- document.newPage();
- PdfImportedPage page = copy.getImportedPage(reader, j);
- copy.addPage(page);
- }
- document.close();
- } catch (IOException e) {
- e.printStackTrace();
- } catch (DocumentException e) {
- e.printStackTrace();
- }
- }
- }