/** * @param fileToAdd file to add * @param password password to open the file * @return the item to add to the table */ PdfSelectionTableItem getPdfSelectionTableItem( File fileToAdd, String password, String pageSelection) { PdfSelectionTableItem tableItem = null; PdfReader pdfReader = null; if (fileToAdd != null) { tableItem = new PdfSelectionTableItem(); tableItem.setInputFile(fileToAdd); tableItem.setPassword(password); tableItem.setPageSelection(pageSelection); try { // fix 03/07 for memory usage pdfReader = new PdfReader( new RandomAccessFileOrArray(new FileInputStream(fileToAdd)), (password != null) ? password.getBytes() : null); tableItem.setEncrypted(pdfReader.isEncrypted()); tableItem.setPagesNumber(Integer.toString(pdfReader.getNumberOfPages())); tableItem.setPdfVersion(pdfReader.getPdfVersion()); } catch (Exception e) { tableItem.setLoadedWithErrors(true); log.error( GettextResource.gettext( Configuration.getInstance().getI18nResourceBundle(), "Error loading ") + fileToAdd.getAbsolutePath() + " :", e); } finally { if (pdfReader != null) { pdfReader.close(); pdfReader = null; } } } return tableItem; }
private void doActionThumbnail() throws PageException, IOException, DocumentException { required("pdf", "thumbnail", "source", source); PDFDocument doc = toPDFDocument(source, password, null); PdfReader pr = doc.getPdfReader(); boolean isEnc = pr.isEncrypted(); pr.close(); if (isEnc) { ByteArrayOutputStream baos = new ByteArrayOutputStream(); // PDFUtil.concat(new PDFDocument[]{doc}, baos, true, true, true, (char)0); PDFUtil.encrypt(doc, baos, null, null, 0, PDFUtil.ENCRYPT_NONE); baos.close(); doc = new PDFDocument(baos.toByteArray(), doc.getResource(), null); } doc.setPages(pages); // scale if (scale < 1) throw new ApplicationException( "value of attribute scale [" + scale + "] should be at least 1"); // destination if (destination == null) destination = ResourceUtil.toResourceNotExisting(pageContext, "thumbnails"); // imagePrefix if (imagePrefix == null) { Resource res = doc.getResource(); if (res != null) { String n = res.getName(); int index = n.lastIndexOf('.'); if (index != -1) imagePrefix = n.substring(0, index); else imagePrefix = n; } else imagePrefix = "memory"; } // MUST password PDFUtil.writeImages( doc.getRaw(), doc.getPages(), destination, imagePrefix, format, scale, overwrite, resolution == RESOLUTION_HIGH, transparent); }
/** * Reads a PDF file for retrieving its metadata. * * @param file File */ public void createTextFromPDF(File file) { if (file.exists()) { int page = 1; PdfReader reader = null; try { reader = new PdfReader(new RandomAccessFileOrArray(file.getAbsolutePath()), null); HashMap<String, String> pdfinfo = reader.getInfo(); StringBuffer sb = new StringBuffer(); sb.append("<html>=== Document Information ===<p>"); sb.append( reader.getCropBox(page).getHeight() + "*" + reader.getCropBox(page).getWidth() + "<p>"); sb.append("PDF Version: " + reader.getPdfVersion() + "<p>"); sb.append("Number of pages: " + reader.getNumberOfPages() + "<p>"); sb.append("Number of PDF objects: " + reader.getXrefSize() + "<p>"); sb.append("File length: " + reader.getFileLength() + "<p>"); sb.append("Encrypted= " + reader.isEncrypted() + "<p>"); if (pdfinfo.get("Title") != null) { sb.append("Title= " + pdfinfo.get("Title") + "<p>"); } if (pdfinfo.get("Author") != null) { sb.append("Author= " + pdfinfo.get("Author") + "<p>"); } if (pdfinfo.get("Subject") != null) { sb.append("Subject= " + pdfinfo.get("Subject") + "<p>"); } if (pdfinfo.get("Producer") != null) { sb.append("Producer= " + pdfinfo.get("Producer") + "<p>"); } if (pdfinfo.get("ModDate") != null) { sb.append("ModDate= " + PdfDate.decode(pdfinfo.get("ModDate")).getTime() + "<p>"); } if (pdfinfo.get("CreationDate") != null) { sb.append( "CreationDate= " + PdfDate.decode(pdfinfo.get("CreationDate")).getTime() + "<p>"); } sb.append("</html>"); label.setText(sb.toString()); } catch (IOException ex) { label.setText(""); } } }