skip to main | skip to sidebar

Java Programs and Examples with Output

Pages

▼
 
  • RSS
  • Twitter
Sunday, September 16, 2012

Split PDF using iText into multiple pages

Posted by Admin at 10:20 AM – 0 comments
 



import java.io.FileInputStream;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.InputStream;
import java.io.OutputStream;
import java.util.StringTokenizer;

import com.itextpdf.text.Document;
import com.itextpdf.text.pdf.PdfContentByte;
import com.itextpdf.text.pdf.PdfImportedPage;
import com.itextpdf.text.pdf.PdfReader;
import com.itextpdf.text.pdf.PdfWriter;
import com.itextpdf.text.pdf.parser.PdfTextExtractor;

public class SplitPDF {

 public static final String pdfDir = "c:\\Mypdf\\";

 public static void splitPDF(PdfReader inputPDF, OutputStream outputStream,
   int fromPage, int toPage) {
  Document document = new Document();
  try {
   // PdfReader inputPDF = new PdfReader(inputStream);
   int totalPages = inputPDF.getNumberOfPages();
   // make fromPage equals to toPage if it is greater
   if (fromPage > toPage) {
    fromPage = toPage;
   }
   if (toPage > totalPages) {
    toPage = totalPages;
   }
   // Create a writer for the outputstream
   PdfWriter writer = PdfWriter.getInstance(document, outputStream);
   document.open();
   PdfContentByte cb = writer.getDirectContent();
   // Holds the PDF data
   PdfImportedPage page;
   while (fromPage <= toPage) {
    document.newPage();
    page = writer.getImportedPage(inputPDF, fromPage);
    // page.getPdfDocument().
    cb.addTemplate(page, 0, 0);
    fromPage++;
   }
   outputStream.flush();
   document.close();
   outputStream.close();
  } catch (Exception e) {
   e.printStackTrace();
  } finally {
   if (document.isOpen())
    document.close();
   try {
    if (outputStream != null)
     outputStream.close();
   } catch (IOException ioe) {
    ioe.printStackTrace();
   }
  }
 }

 public static void splitPDFByBookmarks() {
  try {
   InputStream input = new FileInputStream("c:\\Mypdf\\1.pdf");
   PdfReader reader = new PdfReader(input);
   int totalPages = reader.getNumberOfPages();
   int noOfPages = 1;
   int firstToken = 1;
   int fourthToken = 4;
   for (int pageNum = 1; pageNum < totalPages; pageNum++) {
    String str = PdfTextExtractor.getTextFromPage(reader, pageNum);
    StringTokenizer strTokens = new StringTokenizer(str, "\n");
    int tokenCount = 0;
    while (strTokens.hasMoreTokens()) {
     tokenCount++;
     String token = strTokens.nextToken();
     if (firstToken == tokenCount) {
      String pageDetails = token.substring(token
        .indexOf("page") + 5);
      StringTokenizer strT = new StringTokenizer(pageDetails,
        "/");
      strT.nextElement();
      noOfPages = Integer.parseInt(strT.nextToken().trim());
     } else if (tokenCount == fourthToken) {
      String pdfDocumentName = "c:\\Mypdf\\" + token + ".pdf";
      OutputStream output = new FileOutputStream(
        pdfDocumentName);
      int endPage = pageNum + noOfPages - 1;
      SplitPDF.splitPDF(reader, output, pageNum, endPage);
      pageNum = endPage;
      break;
     }
    }
   }
  } catch (IOException e) {
   System.out.println(e.getMessage());
  }
 }

 private static void extractBookmarkToPDF(PdfReader reader, int pageFrom,
   int pageTo, String outputName, String outputFolder) {
  Document document = new Document();
  OutputStream os = null;

  try {
   os = new FileOutputStream(outputFolder + outputName);

   // Create a writer for the outputstream
   PdfWriter writer = PdfWriter.getInstance(document, os);
   document.open();
   PdfContentByte cb = writer.getDirectContent(); // Holds the PDF data
   PdfImportedPage page;

   while (pageFrom < pageTo) {
    document.newPage();
    page = writer.getImportedPage(reader, pageFrom);
    cb.addTemplate(page, 0, 0);
    pageFrom++;
   }

   os.flush();
   document.close();
   os.close();
  } catch (Exception ex) {
   System.out.println(ex.getMessage());
  } finally {
   if (document.isOpen())
    document.close();
   try {
    if (os != null)
     os.close();
   } catch (IOException ioe) {
    System.out.println(ioe.getMessage());
   }
  }
 }

}

Leave a Reply

Newer Post Older Post
Subscribe to: Post Comments ( Atom )
  • Popular
  • Recent
  • Archives
Powered by Blogger.
 
 
 
© 2011 Java Programs and Examples with Output | Designs by Web2feel & Fab Themes

Bloggerized by DheTemplate.com - Main Blogger