Exemple #1
0
 /**
  * @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;
 }
Exemple #3
0
 /**
  * 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("");
      }
    }
  }