diff options
Diffstat (limited to 'src/main/java/at/gv/egiz/pdfas')
| -rw-r--r-- | src/main/java/at/gv/egiz/pdfas/impl/input/correction/InternalCorrector.java | 7 | ||||
| -rw-r--r-- | src/main/java/at/gv/egiz/pdfas/utils/PDFASUtils.java | 30 | 
2 files changed, 36 insertions, 1 deletions
| diff --git a/src/main/java/at/gv/egiz/pdfas/impl/input/correction/InternalCorrector.java b/src/main/java/at/gv/egiz/pdfas/impl/input/correction/InternalCorrector.java index 409a600..6f73739 100644 --- a/src/main/java/at/gv/egiz/pdfas/impl/input/correction/InternalCorrector.java +++ b/src/main/java/at/gv/egiz/pdfas/impl/input/correction/InternalCorrector.java @@ -11,6 +11,8 @@ import at.gv.egiz.pdfas.exceptions.framework.CorrectorException;  import at.gv.egiz.pdfas.framework.input.PdfDataSource;
  import at.gv.egiz.pdfas.framework.input.correction.Corrector;
  import at.gv.egiz.pdfas.impl.input.ByteArrayPdfDataSourceImpl;
 +import at.gv.egiz.pdfas.utils.PDFASUtils;
 +import at.knowcenter.wag.egov.egiz.exceptions.PDFDocumentException;
  import com.lowagie.text.DocumentException;
  import com.lowagie.text.pdf.PdfReader;
 @@ -33,6 +35,7 @@ public class InternalCorrector implements Corrector      {
        byte[] pdf = document.getAsByteArray();
        PdfReader reader = new PdfReader(pdf);
 +      PDFASUtils.checkReaderPermissions(reader);
        ByteArrayOutputStream baos = new ByteArrayOutputStream(pdf.length);
 @@ -51,7 +54,9 @@ public class InternalCorrector implements Corrector      catch (IOException e)
      {
        throw new CorrectorException(ErrorCode.CORRECTOR_EXCEPTION, e);
 -    }
 +    } catch (PDFDocumentException e) {
 +      throw new CorrectorException(e.getErrorCode(), e);
 +   }
    }
  }
 diff --git a/src/main/java/at/gv/egiz/pdfas/utils/PDFASUtils.java b/src/main/java/at/gv/egiz/pdfas/utils/PDFASUtils.java new file mode 100644 index 0000000..b26cc9b --- /dev/null +++ b/src/main/java/at/gv/egiz/pdfas/utils/PDFASUtils.java @@ -0,0 +1,30 @@ +package at.gv.egiz.pdfas.utils;
 +
 +import at.gv.egiz.pdfas.exceptions.ErrorCode;
 +import at.knowcenter.wag.egov.egiz.exceptions.PDFDocumentException;
 +
 +import com.lowagie.text.pdf.PdfReader;
 +
 +/**
 + * @author tknall
 + */
 +public class PDFASUtils {
 +   
 +   private PDFASUtils() {
 +   }
 +   
 +   /**
 +    * Verifies that a document could be opened with full permissions. 
 +    * @param pdfReader The PdfReader
 +    * @throws PDFDocumentException Thrown if document has not been opened with full permissions.
 +    */
 +   public static void checkReaderPermissions(PdfReader pdfReader) throws PDFDocumentException {
 +      if (pdfReader.isEncrypted()) {
 +         throw new PDFDocumentException(ErrorCode.DOCUMENT_IS_PROTECTED, "Document is encrypted.");
 +      }
 +      if (!pdfReader.isOpenedWithFullPermissions()) {
 +         throw new PDFDocumentException(ErrorCode.DOCUMENT_IS_PROTECTED, "Document is protected.");
 +      }
 +   }
 +   
 +}
 | 
