/** * @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; }
public List<PdfDocumentDescriptor> load(List<PdfDocumentDescriptor> toLoad) { LOG.debug(DefaultI18nContext.getInstance().i18n("Loading documents")); List<PdfDocumentDescriptor> loaded = new ArrayList<>(toLoad.size()); for (PdfDocumentDescriptor current : toLoad) { PdfDocumentDescriptor copy = newCopy(current); PdfReader reader = null; try { reader = current.toPdfSource().open(PdfSourceOpeners.newPartialReadOpener()); copy.setEncryptionStatus(EncryptionStatus.NOT_ENCRYPTED); copy.setPages(reader.getNumberOfPages()); copy.setVersion(String.format("1.%c", reader.getPdfVersion())); @SuppressWarnings("unchecked") Map<String, String> meta = reader.getInfo(); for (PdfMetadataKey key : PdfMetadataKey.values()) { copy.addMedatada(key, defaultString(meta.get(key.getKey()))); } loaded.add(copy); } catch (TaskWrongPasswordException twpe) { copy.setEncryptionStatus(EncryptionStatus.ENCRYPTED); loaded.add(copy); LOG.warn(String.format("Owner password required %s", current.getFileName()), twpe); } catch (Exception e) { LOG.error( String.format("An error occured loading the document %s", current.getFileName()), e); } finally { nullSafeClosePdfReader(reader); } } LOG.debug(DefaultI18nContext.getInstance().i18n("Documents loaded")); return loaded; }
/** * Opens the copier using the given reader and the given output version. * * @param reader * @param outputStream the output stream to write to. * @param version version for the created pdf copy, if null the version number is taken from the * input {@link PdfReader} */ void open(PdfReader reader, OutputStream outputStream, PdfVersion version) throws TaskException { try { pdfDocument = new Document(reader.getPageSizeWithRotation(1)); pdfCopy = new PdfSmartCopy(pdfDocument, outputStream); if (version == null) { pdfCopy.setPdfVersion(reader.getPdfVersion()); } else { pdfCopy.setPdfVersion(version.getVersionAsCharacter()); } pdfDocument.addCreator(Sejda.CREATOR); pdfDocument.open(); } catch (DocumentException e) { throw new TaskException("An error occurred opening the PdfSmartCopy.", e); } }
/** * 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(""); } } }