List of usage examples for com.itextpdf.text.pdf PdfCopy close
@Override public void close()
Document
was closed and that no other Elements
will be added. From source file:eu.mrbussy.pdfsplitter.Application.java
License:Open Source License
/** * Split the given PDF file into multiple files using pages. * /*ww w.ja v a 2s .c o m*/ * @param filename * - Name of the PDF to split * @param useSubFolder * - Use a separate folder to place the files in. */ public static void SplitFile(File file, boolean useSubFolder) { PdfReader reader = null; String format = null; if (useSubFolder) format = "%1$s%2$s%4$s%2$s_%%03d.%3$s"; else format = "%1$s%2$s_%%03d.%3$s"; String splitFile = String.format(format, FilenameUtils.getFullPath(file.getAbsolutePath()), FilenameUtils.getBaseName(file.getAbsolutePath()), FilenameUtils.getExtension(file.getAbsolutePath()), IOUtils.DIR_SEPARATOR); try { reader = new PdfReader(new FileInputStream(file)); if (reader.getNumberOfPages() > 0) { for (int pageNum = 1; pageNum <= reader.getNumberOfPages(); pageNum++) { System.out.println(String.format(splitFile, pageNum)); String filename = String.format(splitFile, pageNum); Document document = new Document(reader.getPageSizeWithRotation(1)); PdfCopy writer = new PdfCopy(document, new FileOutputStream(filename)); document.open(); // Copy the page from the original PdfImportedPage page = writer.getImportedPage(reader, pageNum); writer.addPage(page); document.close(); writer.close(); } } } catch (Exception ex) { // TODO Implement exception handling ex.printStackTrace(System.err); } finally { if (reader != null) // Always close the stream reader.close(); } }
From source file:eu.mrbussy.pdfsplitter.Splitter.java
License:Open Source License
/** * Split the given PDF file into multiple files using pages. * /*from w w w .j a v a 2s. c o m*/ * @param filename * - Name of the PDF to split * @param useSubFolder * - Use a separate folder to place the files in. */ public static void Run(File file, boolean useSubFolder) { PdfReader reader = null; String format = null; if (useSubFolder) { format = "%1$s%2$s%4$s"; // Directory format try { FileUtils.forceMkdir( new File(String.format(format, FilenameUtils.getFullPath(file.getAbsolutePath()), FilenameUtils.getBaseName(file.getAbsolutePath()), FilenameUtils.getExtension(file.getAbsolutePath()), IOUtils.DIR_SEPARATOR))); } catch (IOException e) { // TODO Auto-generated catch block e.printStackTrace(); } format = "%1$s%2$s%4$s%2$s_%%03d.%3$s"; // Directory format + filename } else format = "%1$s%2$s_%%03d.%3$s"; String splitFile = String.format(format, FilenameUtils.getFullPath(file.getAbsolutePath()), FilenameUtils.getBaseName(file.getAbsolutePath()), FilenameUtils.getExtension(file.getAbsolutePath()), IOUtils.DIR_SEPARATOR); try { reader = new PdfReader(new FileInputStream(file)); if (reader.getNumberOfPages() > 0) { for (int pageNum = 1; pageNum <= reader.getNumberOfPages(); pageNum++) { System.out.println(String.format(splitFile, pageNum)); String filename = String.format(splitFile, pageNum); Document document = new Document(reader.getPageSizeWithRotation(1)); PdfCopy writer = new PdfCopy(document, new FileOutputStream(filename)); document.open(); // Copy the page from the original PdfImportedPage page = writer.getImportedPage(reader, pageNum); writer.addPage(page); document.close(); writer.close(); } } } catch (Exception ex) { // TODO Implement exception handling ex.printStackTrace(System.err); } finally { if (reader != null) // Always close the stream reader.close(); } }
From source file:mergevoucher.MainJFrame.java
private void deletePages(File file, String str) throws IOException, DocumentException { //open the old pdf file and open a blank new one String fullFileName = file.getPath(); //System.out.println(fullFileName); PdfReader reader = new PdfReader(fullFileName); Document document = new Document(reader.getPageSizeWithRotation(1)); String out = fullFileName.replaceFirst(".pdf", "(new).pdf"); PdfCopy copy = new PdfCopy(document, new FileOutputStream(out)); document.open();//from www . j a v a 2s .c o m int pdfPageNumber = reader.getNumberOfPages(); //get pdf page number //change pageNumber string to int array Boolean[] preservePages = getPages(pdfPageNumber, str); //copy pages except need delete to new pdf file for (int i = 1; i <= pdfPageNumber; i++) { //filter not preserve pages if (preservePages[i]) { //if preserve,copy;else bypass //String content = PdfTextExtractor.getTextFromPage(reader, i); //?i; copy.addPage(copy.getImportedPage(reader, i)); } } System.out.println("New pdf file is:" + fullFileName.replaceFirst(".pdf", "(new).pdf")); //close files reader.close(); document.close(); copy.close(); }
From source file:org.ednovo.gooru.domain.service.resource.ResourceServiceImpl.java
License:Open Source License
/** * @param mainFileUrl//from w w w. jav a2s. com * : PDF file that has to be splitted * @param splittedPageSize * : Page size of each splitted files */ private static String splitAndSaveChapter(String mainFileUrl, int pageBeginNum, int pageEndNum, String name) { try { PdfReader reader = new PdfReader(mainFileUrl); int splittedPageSize = pageEndNum - pageBeginNum + 1; int pageNum = pageBeginNum; String chapterUrl = mainFileUrl.substring(0, mainFileUrl.indexOf(DOT_PDF)) + "-" + name + DOT_PDF; Document document = new Document(reader.getPageSizeWithRotation(1)); FileOutputStream fos = new FileOutputStream(chapterUrl); PdfCopy writer = new PdfCopy(document, fos); Map<String, String> info = reader.getInfo(); document.open(); if ((info != null) && (info.get(_AUTHOR) != null)) { document.addAuthor(info.get(_AUTHOR)); } document.addTitle(name); for (int offset = 0; offset < splittedPageSize && (pageNum + offset) < pageEndNum; offset++) { PdfImportedPage page = writer.getImportedPage(reader, pageNum + offset); writer.addPage(page); } document.close(); writer.close(); return chapterUrl; } catch (Exception e) { e.printStackTrace(); return null; } }
From source file:oscar.dms.IncomingDocUtil.java
License:Open Source License
public static void deletePage(String queueId, String myPdfDir, String myPdfName, String PageNumberToDelete) throws Exception { long lastModified; String filePathName, tempFilePathName; tempFilePathName = getIncomingDocumentFilePath(queueId, myPdfDir) + File.separator + "T" + myPdfName; filePathName = getIncomingDocumentFilePathName(queueId, myPdfDir, myPdfName); File f = new File(filePathName); lastModified = f.lastModified();/*from www .ja v a2s . co m*/ f.setReadOnly(); String deletePath = getIncomingDocumentDeletedFilePath(queueId, myPdfDir) + File.separator; String deletePathFileName = ""; int index = myPdfName.indexOf(".pdf"); String myPdfNameF = myPdfName.substring(0, index); String myPdfNameExt = myPdfName.substring(index, myPdfName.length()); PdfReader reader = null; Document document = null; PdfCopy copy = null; PdfCopy deleteCopy = null; try { reader = new PdfReader(filePathName); deletePathFileName = deletePath + myPdfNameF + "d" + PageNumberToDelete + "of" + Integer.toString(reader.getNumberOfPages()) + myPdfNameExt; document = new Document(reader.getPageSizeWithRotation(1)); copy = new PdfCopy(document, new FileOutputStream(tempFilePathName)); deleteCopy = new PdfCopy(document, new FileOutputStream(deletePathFileName)); document.open(); for (int pageNumber = 1; pageNumber <= reader.getNumberOfPages(); pageNumber++) { if (!(pageNumber == (Integer.parseInt(PageNumberToDelete)))) { copy.addPage(copy.getImportedPage(reader, pageNumber)); } else { deleteCopy.addPage(copy.getImportedPage(reader, pageNumber)); } } } catch (Exception e) { throw (e); } finally { try { if (copy != null) { copy.close(); } if (deleteCopy != null) { deleteCopy.close(); } if (document != null) { document.close(); } if (reader != null) { reader.close(); } } catch (Exception e) { throw (e); } } boolean success; if (!oscar.OscarProperties.getInstance().getBooleanProperty("INCOMINGDOCUMENT_RECYCLEBIN", "true")) { File f1 = new File(deletePathFileName); success = f1.delete(); if (!success) { throw new Exception("Error in deleting file:" + deletePathFileName); } } success = f.delete(); if (success) { File f1 = new File(tempFilePathName); f1.setLastModified(lastModified); success = f1.renameTo(new File(filePathName)); if (!success) { throw new Exception("Error in renaming file from:" + tempFilePathName + "to " + filePathName); } } else { throw new Exception("Error in deleting file:" + filePathName); } }
From source file:oscar.dms.IncomingDocUtil.java
License:Open Source License
public static void extractPage(String queueId, String myPdfDir, String myPdfName, String pageNumbersToExtract) throws Exception { long lastModified; String filePathName, tempFilePathName; tempFilePathName = getIncomingDocumentFilePath(queueId, myPdfDir) + File.separator + "T" + myPdfName; filePathName = getIncomingDocumentFilePathName(queueId, myPdfDir, myPdfName); File f = new File(filePathName); lastModified = f.lastModified();// w w w. ja v a 2 s . c o m f.setReadOnly(); String extractPath = getIncomingDocumentFilePath(queueId, myPdfDir) + File.separator; int index = myPdfName.toLowerCase().indexOf(".pdf"); String myPdfNameF = myPdfName.substring(0, index); String myPdfNameExt = myPdfName.substring(index, myPdfName.length()); ArrayList<String> extractList = new ArrayList<String>(); int startPage, endPage; boolean cancelExtract = false; PdfReader reader = null; Document document = null; PdfCopy copy = null; PdfCopy extractCopy = null; try { reader = new PdfReader(filePathName); extractPath = extractPath + myPdfNameF + "E" + Integer.toString(reader.getNumberOfPages()) + myPdfNameExt; for (int pgIndex = 0; pgIndex <= reader.getNumberOfPages(); pgIndex++) { extractList.add(pgIndex, "0"); } String tmpPageNumbersToExtract = pageNumbersToExtract; String[] pageList = tmpPageNumbersToExtract.split(","); for (int i = 0; i < pageList.length; i++) { if (!pageList[i].isEmpty()) { String[] rangeList = pageList[i].split("-"); if (rangeList.length > 2) { cancelExtract = true; } for (int j = 0; j < rangeList.length; j++) { if (!rangeList[j].matches("^[0-9]+$")) { cancelExtract = true; } } if (!cancelExtract) { if (rangeList.length == 1) { startPage = Integer.parseInt(rangeList[0], 10); if (startPage > extractList.size() || startPage == 0) { cancelExtract = true; } else { extractList.set(startPage, "1"); } } else if (rangeList.length == 2) { startPage = Integer.parseInt(rangeList[0], 10); endPage = Integer.parseInt(rangeList[1], 10); for (int k = startPage; k <= endPage; k++) { if (k > extractList.size() || k == 0) { cancelExtract = true; } else { extractList.set(k, "1"); } } } } } } if (!cancelExtract) { cancelExtract = true; for (int pageNumber = 1; pageNumber <= reader.getNumberOfPages(); pageNumber++) { if (!(extractList.get(pageNumber).equals("1"))) { cancelExtract = false; } } } if (cancelExtract == true) { reader.close(); throw new Exception(myPdfName + " : Invalid Pages to Extract " + pageNumbersToExtract); } document = new Document(reader.getPageSizeWithRotation(1)); copy = new PdfCopy(document, new FileOutputStream(tempFilePathName)); extractCopy = new PdfCopy(document, new FileOutputStream(extractPath)); document.open(); for (int pageNumber = 1; pageNumber <= reader.getNumberOfPages(); pageNumber++) { if (!(extractList.get(pageNumber).equals("1"))) { copy.addPage(copy.getImportedPage(reader, pageNumber)); } else { extractCopy.addPage(copy.getImportedPage(reader, pageNumber)); } } } catch (Exception e) { throw (e); } finally { try { if (copy != null) { copy.close(); } if (extractCopy != null) { extractCopy.close(); } if (document != null) { document.close(); } if (reader != null) { reader.close(); } } catch (Exception e) { throw (e); } } boolean success = f.delete(); if (success) { File f1 = new File(tempFilePathName); f1.setLastModified(lastModified); success = f1.renameTo(new File(filePathName)); if (!success) { throw new Exception("Error in renaming file from:" + tempFilePathName + "to " + filePathName); } File f2 = new File(extractPath); f2.setLastModified(lastModified); } else { throw new Exception("Error in deleting file:" + filePathName); } }
From source file:pdfmt.pdf2image.java
License:Open Source License
/** * Convert a PDF document to a TIF file */// w ww . j a va 2 s . c om protected static void convert(String pdf, String tif, String destPdf) throws IOException { org.icepdf.core.pobjects.Document pdffile = new org.icepdf.core.pobjects.Document(); try { pdffile.setFile(pdf); } catch (PDFException ex) { // System.out.println("Error parsing PDF document " + ex); } catch (PDFSecurityException ex) { // System.out.println("Error encryption not supported " + ex); } catch (FileNotFoundException ex) { // System.out.println("Error file not found " + ex); } catch (IOException ex) { // System.out.println("Error handling PDF document " + ex); } int numPgs = pdffile.getNumberOfPages(); try { // step 1: create new reader PdfReader r = new PdfReader(pdf); // System.out.println("File Lenght:" + r.getFileLength()); RandomAccessFileOrArray raf = new RandomAccessFileOrArray(pdf); // System.out.println("Raf:" + raf); Document document = new Document(r.getPageSizeWithRotation(1)); // // step 2: create a writer that listens to the document PdfCopy writer = new PdfCopy(document, new FileOutputStream(destPdf)); // // // step 3: we open the document document.open(); // // step 4: we add content PdfImportedPage page = null; // //loop through each page and if the bs is larger than 20 than we know it is not blank. //if it is less than 20 than we don't include that blank page. float scale = 2.084f; float rotation = 0f; BufferedImage image[] = new BufferedImage[numPgs]; for (int i = 0; i < numPgs; i++) { byte bContent[] = r.getPageContent(i + 1, raf); // System.out.println(bContent.toString()); ByteArrayOutputStream bs = new ByteArrayOutputStream(); //write the content to an output stream bs.write(bContent); //System.out.println("page content length of page " + i+1 + " = " // + bs.size()); /* * Generate the image: * Notes: 1275x1650 = 8.5 x 11 @ 150dpi ??? */ image[i] = (BufferedImage) pdffile.getPageImage(i, GraphicsRenderingHints.SCREEN, Page.BOUNDARY_CROPBOX, rotation, scale); Iterator writers = ImageIO.getImageWritersByFormatName("TIFF"); if (writers == null || !writers.hasNext()) { throw new RuntimeException("No writers for available."); } ImageWriter myWriter = (ImageWriter) writers.next(); myWriter.setOutput(new FileImageOutputStream(new File(tif))); myWriter.prepareWriteSequence(null); ImageTypeSpecifier imageType = ImageTypeSpecifier.createFromRenderedImage(image[i]); IIOMetadata imageMetadata = myWriter.getDefaultImageMetadata(imageType, null); imageMetadata = createImageMetadata(imageMetadata); myWriter.writeToSequence(new IIOImage(image[i], null, imageMetadata), null); myWriter.dispose(); image[i] = null; myWriter = null; FileInputStream in = new FileInputStream(tif); FileChannel channel = in.getChannel(); ByteBuffer buffer = ByteBuffer.allocate((int) channel.size()); channel.read(buffer); Image imageBlank; imageBlank = load(buffer.array()); BufferedImage bufferedImage = imageToBufferedImage(imageBlank); boolean isBlank; isBlank = isBlank(bufferedImage); // System.out.println("isblank "+ isBlank); if (isBlank == false) { page = writer.getImportedPage(r, i + 1); writer.addPage(page); } bs.close(); System.gc(); } document.close(); writer.close(); raf.close(); r.close(); } catch (Exception e) { // TODO Auto-generated catch block e.printStackTrace(); } }
From source file:pdfmt.RemoveBlankPdf.java
License:Open Source License
/** * Convert a PDF document to a TIF file. * /*from ww w. ja v a2 s . c om*/ * @param pdf * the pdf * @param tif * the tif * @param destPdf * the dest pdf * @throws IOException * Signals that an I/O exception has occurred. */ protected void convert(String pdf, String tif, String destPdf) throws IOException { startTime = System.currentTimeMillis(); logger.info("In the boolean convert(String pdf, String tif, String destPdf)"); org.icepdf.core.pobjects.Document pdffile = new org.icepdf.core.pobjects.Document(); try { pdffile.setFile(pdf); } catch (PDFException ex) { // System.out.println("Error parsing PDF document " + ex); } catch (PDFSecurityException ex) { // System.out.println("Error encryption not supported " + ex); } catch (FileNotFoundException ex) { // System.out.println("Error file not found " + ex); } catch (IOException ex) { // System.out.println("Error handling PDF document " + ex); } int numPgs = pdffile.getNumberOfPages(); msg.setText(".....::::: Converting pages please wait :::::....."); addComponent(contentPane, msg, 10, 110, 200, 18); try { // step 1: create new reader PdfReader r = new PdfReader(pdf); // System.out.println("File Lenght:" + r.getFileLength()); RandomAccessFileOrArray raf = new RandomAccessFileOrArray(pdf); // System.out.println("Raf:" + raf); Document document = new Document(r.getPageSizeWithRotation(1)); // // step 2: create a writer that listens to the document PdfCopy writer = new PdfCopy(document, new FileOutputStream(destPdf)); // // // step 3: we open the document document.open(); // // step 4: we add content PdfImportedPage page = null; float scale = 2.084f; float rotation = 0f; BufferedImage image[] = new BufferedImage[numPgs]; // -------- CHANGE jprogress.setMaximum(numPgs); // -------- CHANGE for (int i = 0; i < numPgs; i++) { // -------- CHANGE jprogress.setValue(i + 1); // -------- CHANGE byte bContent[] = r.getPageContent(i + 1, raf); // System.out.println(bContent.toString()); ByteArrayOutputStream bs = new ByteArrayOutputStream(); // write the content to an output stream bs.write(bContent); // System.out.println("page content length of page " + i+1 + // " = " // + bs.size()); /* * Generate the image: Notes: 1275x1650 = 8.5 x 11 @ 150dpi ??? */ image[i] = (BufferedImage) pdffile.getPageImage(i, GraphicsRenderingHints.SCREEN, Page.BOUNDARY_CROPBOX, rotation, scale); Iterator writers = ImageIO.getImageWritersByFormatName("TIFF"); if (writers == null || !writers.hasNext()) { throw new RuntimeException("No writers for available."); } ImageWriter myWriter = (ImageWriter) writers.next(); myWriter.setOutput(new FileImageOutputStream(new File(tif))); myWriter.prepareWriteSequence(null); ImageTypeSpecifier imageType = ImageTypeSpecifier.createFromRenderedImage(image[i]); IIOMetadata imageMetadata = myWriter.getDefaultImageMetadata(imageType, null); imageMetadata = createImageMetadata(imageMetadata); myWriter.writeToSequence(new IIOImage(image[i], null, imageMetadata), null); myWriter.dispose(); image[i] = null; myWriter = null; FileInputStream in = new FileInputStream(tif); FileChannel channel = in.getChannel(); ByteBuffer buffer = ByteBuffer.allocate((int) channel.size()); channel.read(buffer); Image imageBlank; imageBlank = load(buffer.array()); BufferedImage bufferedImage = imageToBufferedImage(imageBlank); boolean isBlank; isBlank = isBlank(bufferedImage); // System.out.println("isblank "+ isBlank); boolean hasContent = false; File file = new File(TEMP_DIR + TEMP_EXTR_TEXT); try { FileWriter fileWriter = new FileWriter(file); PageText pageText = pdffile.getPageText(i); if (pageText != null && pageText.getPageLines() != null) { fileWriter.write(pageText.toString()); } // close the writer fileWriter.close(); System.out.println(file.length()); if (file.length() > 20) { hasContent = true; } file.delete(); System.out.println(TEMP_TIFF + " deleted"); } catch (IOException e) { e.printStackTrace(); } if (isBlank == false && hasContent == true) { page = writer.getImportedPage(r, i + 1); writer.addPage(page); } bs.close(); in.close(); File ft = new File(TEMP_DIR + TEMP_TIFF); boolean check = ft.delete(); if (check == true) { System.out.println("Deleted"); } else { System.out.println("Stuck"); } System.gc(); } document.close(); writer.close(); raf.close(); r.close(); stopTime = System.currentTimeMillis(); logger.info("Exit boolean convert(String pdf, String tif, String destPdf) with time: " + ((stopTime - startTime) / 1000)); } catch (Exception e) { // TODO Auto-generated catch block e.printStackTrace(); } }
From source file:spntoolsdata.pdf.util.RemoveBlankPageFromPDF.java
public static void removeBlankPdfPages(String source, String destination) throws IOException, DocumentException { PdfReader r = null;/* ww w.j a v a2 s . c om*/ RandomAccessSourceFactory rasf = null; RandomAccessFileOrArray raf = null; Document document = null; PdfCopy writer = null; try { r = new PdfReader(source); // deprecated // RandomAccessFileOrArray raf // = new RandomAccessFileOrArray(pdfSourceFile); // itext 5.4.1 rasf = new RandomAccessSourceFactory(); raf = new RandomAccessFileOrArray(rasf.createBestSource(source)); document = new Document(r.getPageSizeWithRotation(1)); writer = new PdfCopy(document, new FileOutputStream(destination)); document.open(); PdfImportedPage page = null; for (int i = 1; i <= r.getNumberOfPages(); i++) { // first check, examine the resource dictionary for /Font or // /XObject keys. If either are present -> not blank. PdfDictionary pageDict = r.getPageN(i); PdfDictionary resDict = (PdfDictionary) pageDict.get(PdfName.RESOURCES); boolean noFontsOrImages = true; if (resDict != null) { noFontsOrImages = resDict.get(PdfName.FONT) == null && resDict.get(PdfName.XOBJECT) == null; } if (!noFontsOrImages) { byte bContent[] = r.getPageContent(i, raf); ByteArrayOutputStream bs = new ByteArrayOutputStream(); bs.write(bContent); if (bs.size() > BLANK_THRESHOLD) { page = writer.getImportedPage(r, i); writer.addPage(page); } } } } finally { if (document != null) document.close(); if (writer != null) writer.close(); if (raf != null) raf.close(); if (r != null) r.close(); } }