Example usage for com.itextpdf.text.pdf PdfCopy getImportedPage

List of usage examples for com.itextpdf.text.pdf PdfCopy getImportedPage

Introduction

In this page you can find the example usage for com.itextpdf.text.pdf PdfCopy getImportedPage.

Prototype

@Override
public PdfImportedPage getImportedPage(PdfReader reader, int pageNumber) 

Source Link

Document

Grabs a page from the input document

Usage

From source file:com.innoq.iQpdfutil.Main.java

License:Open Source License

/**
 * copyPages copies all pages from the input reader into the pdfcopy.
 * <p>/*from   w  w  w.  j a  v  a 2  s .  c o m*/
 *     If necessary -- that is if the input pdf contains an odd number
 *     of pages -- this method appends an empty page.
 * </p>
 * */
private static boolean copyPages(PdfReader reader, PdfCopy copy) throws IOException, DocumentException {
    int nrOfPagesInCurrentFile = reader.getNumberOfPages();
    for (int page = 0; page < nrOfPagesInCurrentFile;) {
        copy.addPage(copy.getImportedPage(reader, ++page));
    }

    final boolean isEmptyPageRequired = nrOfPagesInCurrentFile % 2 == 1;
    if (isEmptyPageRequired) {
        copy.addPage(reader.getPageSize(nrOfPagesInCurrentFile), 0);
    }

    return isEmptyPageRequired;
}

From source file:com.photon.phresco.framework.docs.impl.DocConvertor.java

License:Apache License

/**
 * @param fileUrl//from  w  w w.ja  v  a2s .  c  om
 * @return
 * @throws FileNotFoundException
 * @throws IOException
 * @throws DocumentException
 */
private static PdfInput convertPdf(String fileUrl) throws IOException, DocumentException {
    if (isDebugEnabled) {
        S_LOGGER.debug("Entering Method DocConvertor.convertPdf(String fileUrl)");
    }
    PdfReader reader = new PdfReader(new FileInputStream(fileUrl));
    int numberOfPages = reader.getNumberOfPages();
    Document doc = new Document();
    ByteArrayOutputStream os = new ByteArrayOutputStream();
    PdfCopy copy = new PdfCopy(doc, os);
    doc.open();

    //page number in PDF starts at 1
    for (int i = 1; i <= numberOfPages; i++) {
        copy.addPage(copy.getImportedPage(reader, i));
    }
    doc.close();
    ByteArrayInputStream is = new ByteArrayInputStream(os.toByteArray());
    os.close();
    PdfInput input = new PdfInput();
    input.setInputStream(new FileInputStream(fileUrl));
    return input;
}

From source file:com.photon.phresco.framework.docs.impl.DocumentUtil.java

License:Apache License

/**
 * @param titleSection//  w w w  . ja v a  2s .  c  o  m
 * @param pdfCopy
 * @throws PhrescoException 
 */
public static void addPages(InputStream titleSection, PdfCopy pdfCopy) throws PhrescoException {
    if (isDebugEnabled) {
        S_LOGGER.debug("Entering Method DocumentUtil.addPages(InputStream titleSection, PdfCopy pdfCopy)");
    }
    try {
        PdfReader reader = new PdfReader(titleSection);
        reader.consolidateNamedDestinations();
        int pages = reader.getNumberOfPages();
        for (int i = 1; i <= pages; i++) {
            PdfImportedPage importedPage = pdfCopy.getImportedPage(reader, i);
            pdfCopy.addPage(importedPage);
        }
        pdfCopy.freeReader(reader);
    } catch (BadPdfFormatException e) {
        e.printStackTrace();
        throw new PhrescoException(e);
    } catch (IOException e) {
        throw new PhrescoException(e);
    }
}

From source file:com.photon.phresco.service.docs.impl.DocumentUtil.java

License:Apache License

/**
 * @param titleSection/*  w  w  w. j a v  a 2  s.co  m*/
 * @param pdfCopy
 * @throws IOException
 * @throws BadPdfFormatException
 */
public static void addPages(InputStream titleSection, PdfCopy pdfCopy)
        throws IOException, BadPdfFormatException {
    if (isDebugEnabled) {
        S_LOGGER.debug("Entering Method DocumentUtil.addPages(InputStream titleSection, PdfCopy pdfCopy)");
    }
    PdfReader reader = new PdfReader(titleSection);
    reader.consolidateNamedDestinations();
    int pages = reader.getNumberOfPages();
    for (int i = 1; i <= pages; i++) {
        PdfImportedPage importedPage = pdfCopy.getImportedPage(reader, i);
        pdfCopy.addPage(importedPage);
    }
    pdfCopy.freeReader(reader);
}

From source file:com.tommontom.pdfsplitter.PdfCombine.java

public List<File> combine(File folder) throws IOException, DocumentException {
    if (!folder.isDirectory()) {
        throw new IllegalArgumentException("Provided folder is not a directory: " + folder);
    }//w  w w .jav a 2 s  . c  o m
    FileNameFilter FileFilter = new FileNameFilter();
    File[] listOfFiles = folder.listFiles(FileFilter);

    /*
     * Stores the listing of the files
     */
    List<File> newFileList = new ArrayList<>();
    for (int i = 0; i < listOfFiles.length; i++) {
        File file = listOfFiles[i];
        if (!file.isFile()) {
            continue;
        }

        // Split the source filename into its 2 parts
        String fileName = file.getName();
        String fileNameWithoutExt = fileName.substring(0, fileName.lastIndexOf('.'));

        // Split on a space '\s'
        String[] fileNames = fileNameWithoutExt.split("\\s");
        if (fileNames.length != 2) {
            throw new RuntimeException("File name format is not in right format");
        }

        String fileNameFirst = fileNames[0];
        String fileNameSecond = fileNames[1];
        System.out.println("First lot number: " + fileNameFirst + " Second lot number: " + fileNameSecond);
        String[] fileNameFirstParts = fileNameFirst.split("-");

        // Project num is always the 1st part
        String projectNum = fileNameFirstParts[0];
        if (!projectNum.equals(fileNameFirstParts[0])) {
            throw new RuntimeException("Filename needs to be renamed to the correct format");
        }
        // Strip off the first and second lot number, parse into integers
        int firstLotNum;
        int secondLotNum;
        firstLotNum = Integer.parseInt(fileNameFirstParts[1]);
        secondLotNum = Integer.parseInt(fileNameFirstParts[2]);

        // Determine number of pages by difference of lot numbers

        // Read in the source document
        // Example file name: 16034-212234 16034-212236.pdf > 16034-212234.pdf,
        // 16034-212235.pdf, 16034-212236.pdf
        PdfReader pdfFileReader = new PdfReader(file.getPath());
        int mod = pdfFileReader.getNumberOfPages() % 2;
        if (pdfFileReader.equals(mod)) {
            throw new RuntimeException("File is not an even number of pages");
        }
        Document document = new Document();

        /*
         * instantiates a new document to be made
         */
        int numPages = pdfFileReader.getNumberOfPages();
        int p = 0;
        int j = 0;
        // Create a copy of the orignal source file. We will pick specific pages
        // out below
        document.open();
        while (j < numPages) {
            if (p == numPages) {
                break;
            }
            if (j % 2 == 2) {
                j += 1;
            }
            j += 1;
            firstLotNum++;

            // Dynamic filename
            String dynamicFileName = projectNum + "-" + (firstLotNum - 1) + ".pdf";
            document = new Document();
            PdfCopy copy = new PdfCopy(document,
                    new FileOutputStream(folder.getPath() + "\\" + dynamicFileName));
            document.open();
            p += 2;

            // Import pages from original doc
            copy.addPage(copy.getImportedPage(pdfFileReader, j));
            copy.addPage(copy.getImportedPage(pdfFileReader, p));
            document.close();

            // Add to the list of compled file names
            newFileList.add(new File(dynamicFileName));
        }
        System.out.println("Number of Documents Created:" + numPages);
        System.out.println("Number of Documents Created:" + listOfFiles[i]);
    }

    return newFileList;
}

From source file:com.tommontom.pdfsplitter.PdfSplit.java

public void pdfSplit(String path) throws IOException, DocumentException, InterruptedException {
    // TODO Instead of hard code path, pass in as argument
    File folder = new File(path);
    FileNameFilter FileFilter = new FileNameFilter();
    File[] listOfFiles = folder.listFiles(FileFilter); /* Stores the listing of the files */

    for (int i = 0; i < listOfFiles.length; i++) {
        File file = listOfFiles[i];
        if (!file.isFile()) {
            continue;
        }//from w ww  .j av  a2  s  .co m
        // Split the source filename into its 2 parts
        String fileName = file.getName();
        String fileNameWithoutExt = fileName.substring(0, fileName.lastIndexOf("."));
        PdfReader pdfFileReader = new PdfReader(file.getPath());
        Document document = new Document(PageSize.LETTER, 0, 0, 0,
                0); /* instantiates a new document to be made */

        int k = 0;
        int numPages = pdfFileReader.getNumberOfPages();
        // Split on a space '\s'
        // Determine number of pages by difference of lot numbers
        // Read in the source document
        // Example file name: 16034-212234 16034-212236.pdf > 16034-212234.pdf, 16034-212235.pdf, 16034-212236.pdf
        // Create a copy of the orignal source file. We will pick specific pages out below
        for (int j = 1; j < numPages + 1; j++) {
            String FileName = (fileNameWithoutExt); /* Dynamic file name */

            PdfCopy copy = new PdfCopy(document,
                    new FileOutputStream(path + "\\" + FileName + "(" + j + ")" + ".pdf"));
            document.open();
            copy.addPage(copy.getImportedPage(pdfFileReader, j)); /* Import pages from original document */

            deleteFile[k] = path + "\\" + FileName + "(" + j + 1 + ")" + ".pdf";
            k++;
            if (j == 1) {
                newFileListing = ("Created File:" + path + FileName + "(" + j + ")" + ".pdf" + "\n");
            } else if (j > 1) {
                newFileListing += ("Created File:" + path + FileName + "(" + j + ")" + ".pdf" + "\n");
            }
            document.close();

        }

        System.out.println("Number of Documents Created:" + numPages);
        pdfFileReader.close();
    }
}

From source file:com.tommontom.pdfsplitter.PdfSplit.java

public void pdfSplitCopy(String path) throws IOException, DocumentException {
    // TODO Instead of hard code path, pass in as argument
    File folder = new File(path);
    FileNameFilter FileFilter = new FileNameFilter();
    File[] listOfFiles = folder.listFiles(FileFilter); /* Stores the listing of the files */

    for (int i = 0; i < listOfFiles.length; i++) {
        File file = listOfFiles[i];
        if (!file.isFile()) {
            continue;
        }//from   w  w w . ja v  a 2s.co m
        // Split the source filename into its 2 parts
        String fileName = file.getName();
        String fileNameWithoutExt = fileName.substring(0, fileName.lastIndexOf("."));
        PdfReader pdfFileReader = new PdfReader(file.getPath());
        Document document = new Document(PageSize.LETTER, 0, 0, 0,
                0); /* instantiates a new document to be made */

        String[] fileNameNum = fileNameWithoutExt.split("-");
        int fileNameNumOne = Integer.getInteger(fileNameNum[0]);
        int fileNameNumTwo = Integer.getInteger(fileNameNum[1]);
        int constant = 1;
        int k = 0;
        int numPages = fileNameNumTwo - fileNameNumOne;
        // Split on a space '\s'
        // Determine number of pages by difference of lot numbers
        // Read in the source document
        // Example file name: 16034-212234 16034-212236.pdf > 16034-212234.pdf, 16034-212235.pdf, 16034-212236.pdf
        // Create a copy of the orignal source file. We will pick specific pages out below
        document.open();
        for (int j = 0; j < numPages + 1; j++) {
            String FileName = (fileNameWithoutExt); /* Dynamic file name */
            PdfCopy copy = new PdfCopy(document,
                    new FileOutputStream(path + "\\" + FileName + "(" + j + 1 + ")" + ".pdf"));
            deleteFile[k] = (path + "\\" + FileName + "(" + j + 1 + ")" + ".pdf");
            k++;
            document.open();
            copy.addPage(
                    copy.getImportedPage(pdfFileReader, constant)); /* Import pages from original document */

            if (j == 1) {
                newFileListing = ("Created File:" + path + FileName + "(" + j + ")" + ".pdf" + "\n");
            } else if (j > 1) {
                newFileListing += ("Created File:" + path + FileName + "(" + j + ")" + ".pdf" + "\n");
            }
            document.close();
            copy.close();
        }

        System.out.println("Number of Documents Created:" + numPages);
        pdfFileReader.close();
    }

}

From source file:com.tommontom.pdfsplitter.PdfSplit.java

public void pdfSplitSupplierDoc(String path) throws IOException, DocumentException {
    // TODO Instead of hard code path, pass in as argument
    File folder = new File(path);
    FileNameFilter FileFilter = new FileNameFilter();
    File[] listOfFiles = folder.listFiles(FileFilter); /* Stores the listing of the files */

    for (int i = 0; i < listOfFiles.length; i++) {
        File file = listOfFiles[i];
        if (!file.isFile()) {
            continue;
        }/*from   w ww.  j  a v  a  2 s. com*/
        // Split the source filename into its 2 parts
        String fileName = file.getName();
        String fileNameWithoutExt = fileName.substring(0, fileName.lastIndexOf("."));
        PdfReader pdfFileReader = new PdfReader(file.getPath());
        Document document = new Document(PageSize.LETTER, 0, 0, 0,
                0); /* instantiates a new document to be made */

        String[] fileNames = fileNameWithoutExt.split("-");
        /*
         * if (fileNames.length != 2) { throw new RuntimeException("File name format is not in right format"); }
         */

        String fileNameFirst = fileNames[1];
        String fileNameSecond = fileNames[2];
        System.out.println("First lot number: " + fileNameFirst + " Second lot number: " + fileNameSecond);
        // Project num is always the 1st part
        String projectNum = fileNames[0];
        if (!projectNum.equals(fileNames[0])) {
            throw new RuntimeException("Filename needs to have a project number");
        }

        // Strip off the first and second lot number, parse into integers
        int firstLotNum;
        int secondLotNum;
        firstLotNum = Integer.parseInt(fileNames[1]);
        secondLotNum = Integer.parseInt(fileNames[2].substring(0, fileNames[2].lastIndexOf(".")));
        // Create a copy of the orignal source file. We will pick specific pages out below
        document.open();
        int numPages = secondLotNum - firstLotNum;
        for (int j = 1; j < numPages + 1; j++) {
            String FileName = projectNum + "-" + (firstLotNum) + ".pdf"; /* Dynamic file name */

            firstLotNum++;
            document = new Document(PageSize.LETTER, 0, 0, 0, 0);
            PdfCopy copy = new PdfCopy(document, new FileOutputStream(path + "\\" + FileName));
            document.open();
            copy.addPage(copy.getImportedPage(pdfFileReader, j)); /* Import pages from original document */

            document.close();
            copy.close();
        }
        pdfFileReader.close();
    }
}

From source file:com.tommontom.pdfsplitter.PdfSplit.java

public void pdfSplitDrop(File[] files) throws IOException, DocumentException, InterruptedException {
    // TODO Instead of hard code path, pass in as argument
    String path;//from   ww w. jav a  2 s .c om
    if (directoryField.getText().isEmpty() || directoryField.getText().equals(example)) {
        path = files[0].getParent();
    } else {
        path = directoryField.getText();
    }
    File[] listOfFiles = files; /* Stores the listing of the files */

    for (int i = 0; i < listOfFiles.length; i++) {
        File file = listOfFiles[i];
        if (!file.isFile()) {
            continue;
        }
        // Split the source filename into its 2 parts
        String fileName = file.getName();
        String fileNameWithoutExt = fileName.substring(0, fileName.lastIndexOf("."));
        PdfReader pdfFileReader = new PdfReader(file.getPath());
        Document document = new Document(PageSize.LETTER, 0, 0, 0,
                0); /* instantiates a new document to be made */

        int numPages = pdfFileReader.getNumberOfPages();
        // Determine number of pages by difference of lot numbers
        // Read in the source document
        // Example file name: 16034-212234 16034-212236.pdf > 16034-212234.pdf, 16034-212235.pdf, 16034-212236.pdf
        // Create a copy of the orignal source file. We will pick specific pages out below
        int k = 0;
        for (int j = 1; j < numPages + 1; j++) {
            String FileName = fileNameWithoutExt; /* Dynamic file name */

            PdfCopy copy = new PdfCopy(document,
                    new FileOutputStream(path + "\\" + FileName + "(" + j + ")" + ".pdf"));
            document.open();
            copy.addPage(copy.getImportedPage(pdfFileReader, j)); /* Import pages from original document */
            deleteFile[k] += path + "\\" + FileName + "(" + j + ")" + ".pdf";
            k++;
            if (j == 1) {
                newFileListing = ("Created File:" + path + FileName + "(" + j + ")" + ".pdf" + "\n");
            } else if (j > 1) {
                newFileListing += ("Created File:" + path + FileName + "(" + j + ")" + ".pdf" + "\n");
            }
            document.close();
            copy.close();
        }

        pdfFileReader.close();
    }
}

From source file:com.tommontom.pdfsplitter.PdfSplit.java

public void pdfSplitDropCopy(File[] files) throws IOException, DocumentException {
    // TODO Instead of hard code path, pass in as argument
    String path;/*from   w w  w. j a v  a 2 s  . c  o m*/
    path = files[0].getParent();
    File[] listOfFiles = files; /* Stores the listing of the files */
    System.out.println(directoryField);
    for (int i = 0; i < listOfFiles.length; i++) {
        File file = listOfFiles[i];
        if (!file.isFile()) {
            continue;
        }
        // Split the source filename into its 2 parts
        String fileName = file.getName();
        String fileNameWithoutExt = fileName.substring(0, fileName.lastIndexOf("."));
        String[] fileNameNum = fileNameWithoutExt.split("-");
        int fileNameNumOne = Integer.parseInt(fileNameNum[0]);
        int fileNameNumTwo = Integer.parseInt(fileNameNum[1]);
        int constant = 1;
        int numPages = fileNameNumTwo - fileNameNumOne;
        PdfReader pdfFileReader = new PdfReader(file.getPath());
        Document document = new Document(PageSize.LETTER, 0, 0, 0, 0);
        ; /* instantiates a new document to be made */

        // Determine number of pages by difference of lot numbers
        // Read in the source document
        // Example file name: 16034-212234 16034-212236.pdf > 16034-212234.pdf, 16034-212235.pdf, 16034-212236.pdf
        // Create a copy of the orignal source file. We will pick specific pages out below
        for (int j = 0; j < numPages + 1; j++) {
            String FileName = fileNameWithoutExt; /* Dynamic file name */
            PdfCopy copy = new PdfCopy(document,
                    new FileOutputStream(path + "\\" + FileName + "(" + j + 1 + ")" + ".pdf"));
            document.open();
            copy.addPage(
                    copy.getImportedPage(pdfFileReader, constant)); /* Import pages from original document */
            if (j == 1) {
                newFileListing = ("Created File:" + path + FileName + "(" + j + ")" + ".pdf" + "\n");
            } else if (j > 1) {
                newFileListing += ("Created File:" + path + FileName + "(" + j + ")" + ".pdf" + "\n");
            }
            document.close();
        }
        pdfFileReader.close();
    }
}