List of usage examples for com.lowagie.text.pdf PdfReader getNumberOfPages
public int getNumberOfPages()
From source file:it.pdfsam.plugin.coverfooter.type.TableTransferHandler.java
License:Open Source License
/** * Drop the CoverFooterItem// ww w. j a v a 2 s . c o m */ public boolean importData(JComponent c, Transferable t) { if (!(c instanceof JCoverFooterTable)) { return false; } if (canImport(c, t.getTransferDataFlavors())) { try { if (hasCoverFooterItemFlavor(t)) { Object obj = t.getTransferData(CoverFooterItemTransfer.COVERFOOTERITEMFLAVOUR); if (!(obj instanceof CoverFooterItemTransfer)) return false; CoverFooterItemTransfer mit = (CoverFooterItemTransfer) obj; ArrayList cover_item_obj = mit.getData(); importCoverFooterItem(c, cover_item_obj); return true; } else if (hasFileFlavor(t)) { List file_list = (List) t.getTransferData(DataFlavor.javaFileListFlavor); ArrayList row_items = new ArrayList(); for (int i = 0; i < file_list.size(); i++) { File file_item = (File) file_list.get(i); boolean encrypt = false; String num_pages = ""; try { PdfReader pdf_reader = new PdfReader(file_item.getAbsolutePath()); encrypt = pdf_reader.isEncrypted(); // we retrieve the total number of pages num_pages = Integer.toString(pdf_reader.getNumberOfPages()); } catch (Exception ex) { num_pages = ex.getMessage(); } CoverFooterItemType cover_item_obj = new CoverFooterItemType(file_item.getName(), file_item.getAbsolutePath(), num_pages, "All", encrypt); row_items.add(cover_item_obj); } importCoverFooterItem(c, row_items); return true; } else { return false; } } catch (UnsupportedFlavorException ufe) { } catch (IOException ioe) { } } return false; }
From source file:it.pdfsam.plugin.merge.GUI.MergeMainGUI.java
License:Open Source License
private void addTableRow(File file_to_add) { if (file_to_add != null) { boolean encrypt = false; String num_pages = ""; try {/*from www .j a v a 2 s .c o m*/ //fix 03/07 for memory usage PdfReader pdf_reader = new PdfReader(new RandomAccessFileOrArray(file_to_add.getAbsolutePath()), null); encrypt = pdf_reader.isEncrypted(); // we retrieve the total number of pages num_pages = Integer.toString(pdf_reader.getNumberOfPages()); pdf_reader.close(); } catch (Exception ex) { num_pages = ex.getMessage(); } try { modello_merge_table.addRow(new MergeItemType(file_to_add.getName(), file_to_add.getAbsolutePath(), num_pages, MergeMainGUI.ALL_STRING, encrypt)); fireLogPropertyChanged( GettextResource.gettext(i18n_messages, "File selected: ") + file_to_add.getName(), LogPanel.LOG_INFO); } catch (Exception ex) { fireLogPropertyChanged(GettextResource.gettext(i18n_messages, "Error: ") + ex.getMessage(), LogPanel.LOG_ERROR); } } }
From source file:it.pdfsam.plugin.merge.GUI.MergeMainGUI.java
License:Open Source License
private void addTableRowsFromNode(Node file_node) { if (file_node != null) { boolean encrypt = false; String num_pages = ""; String page_selection = ""; File file_to_add = null;//from ww w.j a v a 2 s . c o m try { Node file_name = (Node) file_node.selectSingleNode("@name"); if (file_name != null) { file_to_add = new File(file_name.getText()); } } catch (Exception ex) { file_to_add = null; fireLogPropertyChanged(GettextResource.gettext(i18n_messages, "Error: ") + ex.getMessage(), LogPanel.LOG_ERROR); } try { if (file_to_add != null) { PdfReader pdf_reader = new PdfReader(new RandomAccessFileOrArray(file_to_add.getAbsolutePath()), null); encrypt = pdf_reader.isEncrypted(); // we retrieve the total number of pages num_pages = Integer.toString(pdf_reader.getNumberOfPages()); pdf_reader.close(); } } catch (Exception ex) { num_pages = ex.getMessage(); } try { Node file_pages = (Node) file_node.selectSingleNode("@pageselection"); if (file_pages != null) { page_selection = file_pages.getText(); } else { page_selection = MergeMainGUI.ALL_STRING; } } catch (Exception ex) { page_selection = MergeMainGUI.ALL_STRING; } try { modello_merge_table.addRow(new MergeItemType(file_to_add.getName(), file_to_add.getAbsolutePath(), num_pages, page_selection, encrypt)); fireLogPropertyChanged( GettextResource.gettext(i18n_messages, "File selected: ") + file_to_add.getName(), LogPanel.LOG_INFO); } catch (Exception ex) { fireLogPropertyChanged(GettextResource.gettext(i18n_messages, "Error: ") + ex.getMessage(), LogPanel.LOG_ERROR); } } }
From source file:it.pdfsam.plugin.merge.type.TableTransferHandler.java
License:Open Source License
/** * Drop the MergeItem/*from w ww . j a v a 2 s . c o m*/ */ public boolean importData(JComponent c, Transferable t) { if (!(c instanceof JMergeTable)) { return false; } if (canImport(c, t.getTransferDataFlavors())) { try { if (hasMergeItemFlavor(t)) { Object obj = t.getTransferData(MergeItemTransfer.MERGEITEMFLAVOUR); if (!(obj instanceof MergeItemTransfer)) return false; MergeItemTransfer mit = (MergeItemTransfer) obj; ArrayList merge_item_obj = mit.getData(); importMergeItem(c, merge_item_obj); return true; } else if (hasFileFlavor(t)) { List file_list = (List) t.getTransferData(DataFlavor.javaFileListFlavor); ArrayList row_items = new ArrayList(); for (int i = 0; i < file_list.size(); i++) { File file_item = (File) file_list.get(i); boolean encrypt = false; String num_pages = ""; try { PdfReader pdf_reader = new PdfReader(file_item.getAbsolutePath()); encrypt = pdf_reader.isEncrypted(); // we retrieve the total number of pages num_pages = Integer.toString(pdf_reader.getNumberOfPages()); } catch (Exception ex) { num_pages = ex.getMessage(); } MergeItemType merge_item_obj = new MergeItemType(file_item.getName(), file_item.getAbsolutePath(), num_pages, "All", encrypt); row_items.add(merge_item_obj); } importMergeItem(c, row_items); return true; } else { return false; } } catch (UnsupportedFlavorException ufe) { } catch (IOException ioe) { } } return false; }
From source file:lucee.runtime.tag.Document.java
License:Open Source License
private void render(OutputStream os, boolean doBookmarks, boolean doHtmlBookmarks) throws IOException, PageException, DocumentException { byte[] pdf = null; // merge multiple docs to 1 if (documents.size() > 1) { PDFDocument[] pdfDocs = new PDFDocument[documents.size()]; PdfReader[] pdfReaders = new PdfReader[pdfDocs.length]; Iterator<PDFDocument> it = documents.iterator(); int index = 0; // generate pdf with pd4ml while (it.hasNext()) { pdfDocs[index] = it.next();//from w w w. j a v a 2s. com pdfReaders[index] = new PdfReader( pdfDocs[index].render(getDimension(), unitFactor, pageContext, doHtmlBookmarks)); index++; } // collect together ByteArrayOutputStream baos = new ByteArrayOutputStream(); com.lowagie.text.Document document = new com.lowagie.text.Document( pdfReaders[0].getPageSizeWithRotation(1)); PdfCopy copy = new PdfCopy(document, baos); document.open(); String name; ArrayList bookmarks = doBookmarks ? new ArrayList() : null; try { int size, totalPage = 0; Map parent; for (int doc = 0; doc < pdfReaders.length; doc++) { size = pdfReaders[doc].getNumberOfPages(); PdfImportedPage ip; // bookmarks if (doBookmarks) { name = pdfDocs[doc].getName(); if (!StringUtil.isEmpty(name)) { bookmarks.add(parent = PDFUtil.generateGoToBookMark(name, totalPage + 1)); } else parent = null; if (doHtmlBookmarks) { java.util.List pageBM = SimpleBookmark.getBookmark(pdfReaders[doc]); if (pageBM != null) { if (totalPage > 0) SimpleBookmark.shiftPageNumbers(pageBM, totalPage, null); if (parent != null) PDFUtil.setChildBookmarks(parent, pageBM); else bookmarks.addAll(pageBM); } } } totalPage++; for (int page = 1; page <= size; page++) { if (page > 1) totalPage++; ip = copy.getImportedPage(pdfReaders[doc], page); //ip.getPdfDocument().setHeader(arg0); //ip.getPdfDocument().setFooter(arg0); copy.addPage(ip); } } if (doBookmarks && !bookmarks.isEmpty()) copy.setOutlines(bookmarks); } finally { document.close(); } pdf = baos.toByteArray(); } else if (documents.size() == 1) { pdf = (documents.get(0)).render(getDimension(), unitFactor, pageContext, doHtmlBookmarks); } else { pdf = getDocument().render(getDimension(), unitFactor, pageContext, doHtmlBookmarks); } // permission/encryption if (PDFDocument.ENC_NONE != encryption) { PdfReader reader = new PdfReader(pdf); com.lowagie.text.Document document = new com.lowagie.text.Document(reader.getPageSize(1)); document.addCreator("Lucee " + Info.getVersionAsString() + " " + Info.getStateAsString()); ByteArrayOutputStream baos = new ByteArrayOutputStream(); PdfCopy copy = new PdfCopy(document, baos); //PdfWriter writer = PdfWriter.getInstance(document, pdfOut); copy.setEncryption(PDFDocument.ENC_128BIT == encryption, userpassword, ownerpassword, permissions); document.open(); int size = reader.getNumberOfPages(); for (int page = 1; page <= size; page++) { copy.addPage(copy.getImportedPage(reader, page)); } document.close(); pdf = baos.toByteArray(); } // write out if (os != null) IOUtil.copy(new ByteArrayInputStream(pdf), os, true, false); if (!StringUtil.isEmpty(name)) { pageContext.setVariable(name, pdf); } }
From source file:lucee.runtime.tag.PDF.java
License:Open Source License
private void doActionAddWatermark() throws PageException, IOException, DocumentException { required("pdf", "addWatermark", "source", source); if (copyFrom == null && image == null) throw new ApplicationException( "at least one of the following attributes must be defined " + "[copyFrom,image]"); if (destination != null && destination.exists() && !overwrite) throw new ApplicationException("destination file [" + destination + "] already exists"); // image/*from ww w .j a va 2 s . c om*/ Image img = null; if (image != null) { lucee.runtime.img.Image ri = lucee.runtime.img.Image.createImage(pageContext, image, false, false, true, null); img = Image.getInstance(ri.getBufferedImage(), null, false); } // copy From else { byte[] barr; try { Resource res = Caster.toResource(pageContext, copyFrom, true); barr = IOUtil.toBytes(res); } catch (ExpressionException ee) { barr = Caster.toBinary(copyFrom); } img = Image.getInstance(PDFUtil.toImage(barr, 1).getBufferedImage(), null, false); } // position float x = UNDEFINED, y = UNDEFINED; if (!StringUtil.isEmpty(position)) { int index = position.indexOf(','); if (index == -1) throw new ApplicationException("attribute [position] has an invalid value [" + position + "]," + "value should follow one of the following pattern [40,50], [40,] or [,50]"); String strX = position.substring(0, index).trim(); String strY = position.substring(index + 1).trim(); if (!StringUtil.isEmpty(strX)) x = Caster.toIntValue(strX); if (!StringUtil.isEmpty(strY)) y = Caster.toIntValue(strY); } PDFDocument doc = toPDFDocument(source, password, null); doc.setPages(pages); PdfReader reader = doc.getPdfReader(); reader.consolidateNamedDestinations(); boolean destIsSource = destination != null && doc.getResource() != null && destination.equals(doc.getResource()); java.util.List bookmarks = SimpleBookmark.getBookmark(reader); ArrayList master = new ArrayList(); if (bookmarks != null) master.addAll(bookmarks); // output OutputStream os = null; if (!StringUtil.isEmpty(name) || destIsSource) { os = new ByteArrayOutputStream(); } else if (destination != null) { os = destination.getOutputStream(); } try { int len = reader.getNumberOfPages(); PdfStamper stamp = new PdfStamper(reader, os); if (len > 0) { if (x == UNDEFINED || y == UNDEFINED) { PdfImportedPage first = stamp.getImportedPage(reader, 1); if (y == UNDEFINED) y = (first.getHeight() - img.getHeight()) / 2; if (x == UNDEFINED) x = (first.getWidth() - img.getWidth()) / 2; } img.setAbsolutePosition(x, y); //img.setAlignment(Image.ALIGN_JUSTIFIED); ration geht nicht anhand mitte } // rotation if (rotation != 0) { img.setRotationDegrees(rotation); } Set _pages = doc.getPages(); for (int i = 1; i <= len; i++) { if (_pages != null && !_pages.contains(Integer.valueOf(i))) continue; PdfContentByte cb = foreground ? stamp.getOverContent(i) : stamp.getUnderContent(i); PdfGState gs1 = new PdfGState(); //print.out("op:"+opacity); gs1.setFillOpacity(opacity); //gs1.setStrokeOpacity(opacity); cb.setGState(gs1); cb.addImage(img); } if (bookmarks != null) stamp.setOutlines(master); stamp.close(); } finally { IOUtil.closeEL(os); if (os instanceof ByteArrayOutputStream) { if (destination != null) IOUtil.copy(new ByteArrayInputStream(((ByteArrayOutputStream) os).toByteArray()), destination, true);// MUST overwrite if (!StringUtil.isEmpty(name)) { pageContext.setVariable(name, new PDFDocument(((ByteArrayOutputStream) os).toByteArray(), password)); } } } }
From source file:lucee.runtime.tag.PDF.java
License:Open Source License
private void doActionRemoveWatermark() throws PageException, IOException, DocumentException { required("pdf", "removeWatermark", "source", source); if (destination != null && destination.exists() && !overwrite) throw new ApplicationException("destination file [" + destination + "] already exists"); lucee.runtime.img.Image ri = new lucee.runtime.img.Image(1, 1, BufferedImage.TYPE_INT_RGB, Color.BLACK); Image img = Image.getInstance(ri.getBufferedImage(), null, false); img.setAbsolutePosition(1, 1);/* w ww.j a v a 2s . c om*/ PDFDocument doc = toPDFDocument(source, password, null); doc.setPages(pages); PdfReader reader = doc.getPdfReader(); boolean destIsSource = destination != null && doc.getResource() != null && destination.equals(doc.getResource()); java.util.List bookmarks = SimpleBookmark.getBookmark(reader); ArrayList master = new ArrayList(); if (bookmarks != null) master.addAll(bookmarks); // output OutputStream os = null; if (!StringUtil.isEmpty(name) || destIsSource) { os = new ByteArrayOutputStream(); } else if (destination != null) { os = destination.getOutputStream(); } try { int len = reader.getNumberOfPages(); PdfStamper stamp = new PdfStamper(reader, os); Set _pages = doc.getPages(); for (int i = 1; i <= len; i++) { if (_pages != null && !_pages.contains(Integer.valueOf(i))) continue; PdfContentByte cb = foreground ? stamp.getOverContent(i) : stamp.getUnderContent(i); PdfGState gs1 = new PdfGState(); gs1.setFillOpacity(0); cb.setGState(gs1); cb.addImage(img); } if (bookmarks != null) stamp.setOutlines(master); stamp.close(); } finally { IOUtil.closeEL(os); if (os instanceof ByteArrayOutputStream) { if (destination != null) IOUtil.copy(new ByteArrayInputStream(((ByteArrayOutputStream) os).toByteArray()), destination, true);// MUST overwrite if (!StringUtil.isEmpty(name)) { pageContext.setVariable(name, new PDFDocument(((ByteArrayOutputStream) os).toByteArray(), password)); } } } }
From source file:lucee.runtime.text.pdf.PDFDocument.java
License:Open Source License
public Struct getInfo() { PdfReader pr = null; try {//from ww w .j av a 2 s. c o m pr = getPdfReader(); //PdfDictionary catalog = pr.getCatalog(); int permissions = pr.getPermissions(); boolean encrypted = pr.isEncrypted(); Struct info = new StructImpl(); info.setEL("FilePath", getFilePath()); // access info.setEL("ChangingDocument", allowed(encrypted, permissions, PdfWriter.ALLOW_MODIFY_CONTENTS)); info.setEL("Commenting", allowed(encrypted, permissions, PdfWriter.ALLOW_MODIFY_ANNOTATIONS)); info.setEL("ContentExtraction", allowed(encrypted, permissions, PdfWriter.ALLOW_SCREENREADERS)); info.setEL("CopyContent", allowed(encrypted, permissions, PdfWriter.ALLOW_COPY)); info.setEL("DocumentAssembly", allowed(encrypted, permissions, PdfWriter.ALLOW_ASSEMBLY + PdfWriter.ALLOW_MODIFY_CONTENTS)); info.setEL("FillingForm", allowed(encrypted, permissions, PdfWriter.ALLOW_FILL_IN + PdfWriter.ALLOW_MODIFY_ANNOTATIONS)); info.setEL("Printing", allowed(encrypted, permissions, PdfWriter.ALLOW_PRINTING)); info.setEL("Secure", ""); info.setEL("Signing", allowed(encrypted, permissions, PdfWriter.ALLOW_MODIFY_ANNOTATIONS + PdfWriter.ALLOW_MODIFY_CONTENTS + PdfWriter.ALLOW_FILL_IN)); info.setEL("Encryption", encrypted ? "Password Security" : "No Security");// MUST info.setEL("TotalPages", Caster.toDouble(pr.getNumberOfPages())); info.setEL("Version", "1." + pr.getPdfVersion()); info.setEL("permissions", "" + permissions); info.setEL("permiss", "" + PdfWriter.ALLOW_FILL_IN); info.setEL("Application", ""); info.setEL("Author", ""); info.setEL("CenterWindowOnScreen", ""); info.setEL("Created", ""); info.setEL("FitToWindow", ""); info.setEL("HideMenubar", ""); info.setEL("HideToolbar", ""); info.setEL("HideWindowUI", ""); info.setEL("Keywords", ""); info.setEL("Language", ""); info.setEL("Modified", ""); info.setEL("PageLayout", ""); info.setEL("Producer", ""); info.setEL("Properties", ""); info.setEL("ShowDocumentsOption", ""); info.setEL("ShowWindowsOption", ""); info.setEL("Subject", ""); info.setEL("Title", ""); info.setEL("Trapped", ""); // info HashMap imap = pr.getInfo(); Iterator it = imap.entrySet().iterator(); Map.Entry entry; while (it.hasNext()) { entry = (Entry) it.next(); info.setEL(Caster.toString(entry.getKey(), null), entry.getValue()); } return info; } catch (PageException pe) { throw new PageRuntimeException(pe); } finally { if (pr != null) pr.close(); } }
From source file:lucee.runtime.text.pdf.PDFUtil.java
License:Open Source License
/** * @param docs//from w w w .ja v a 2s . c om * @param os * @param removePages if true, pages defined in PDFDocument will be removed, otherwise all other pages will be removed * @param version * @throws PageException * @throws IOException * @throws DocumentException */ public static void concat(PDFDocument[] docs, OutputStream os, boolean keepBookmark, boolean removePages, boolean stopOnError, char version) throws PageException, IOException, DocumentException { Document document = null; PdfCopy writer = null; PdfReader reader; Set pages; boolean isInit = false; PdfImportedPage page; try { int pageOffset = 0; ArrayList master = new ArrayList(); for (int i = 0; i < docs.length; i++) { // we create a reader for a certain document pages = docs[i].getPages(); try { reader = docs[i].getPdfReader(); } catch (Throwable t) { if (!stopOnError) continue; throw Caster.toPageException(t); } reader.consolidateNamedDestinations(); // we retrieve the total number of pages int n = reader.getNumberOfPages(); List bookmarks = keepBookmark ? SimpleBookmark.getBookmark(reader) : null; if (bookmarks != null) { removeBookmarks(bookmarks, pages, removePages); if (pageOffset != 0) SimpleBookmark.shiftPageNumbers(bookmarks, pageOffset, null); master.addAll(bookmarks); } if (!isInit) { isInit = true; document = new Document(reader.getPageSizeWithRotation(1)); writer = new PdfCopy(document, os); if (version != 0) writer.setPdfVersion(version); document.open(); } for (int y = 1; y <= n; y++) { if (pages != null && removePages == pages.contains(Integer.valueOf(y))) { continue; } pageOffset++; page = writer.getImportedPage(reader, y); writer.addPage(page); } PRAcroForm form = reader.getAcroForm(); if (form != null) writer.copyAcroForm(reader); } if (master.size() > 0) writer.setOutlines(master); } finally { IOUtil.closeEL(document); } }
From source file:lucee.runtime.text.pdf.PDFUtil.java
License:Open Source License
public static void encrypt(PDFDocument doc, OutputStream os, String newUserPassword, String newOwnerPassword, int permissions, int encryption) throws ApplicationException, DocumentException, IOException { byte[] user = newUserPassword == null ? null : newUserPassword.getBytes(); byte[] owner = newOwnerPassword == null ? null : newOwnerPassword.getBytes(); PdfReader pr = doc.getPdfReader(); List bookmarks = SimpleBookmark.getBookmark(pr); int n = pr.getNumberOfPages(); Document document = new Document(pr.getPageSizeWithRotation(1)); PdfCopy writer = new PdfCopy(document, os); if (encryption != ENCRYPT_NONE) writer.setEncryption(user, owner, permissions, encryption); document.open();/*from ww w .j av a 2s .co m*/ PdfImportedPage page; for (int i = 1; i <= n; i++) { page = writer.getImportedPage(pr, i); writer.addPage(page); } PRAcroForm form = pr.getAcroForm(); if (form != null) writer.copyAcroForm(pr); if (bookmarks != null) writer.setOutlines(bookmarks); document.close(); }