You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@pdfbox.apache.org by ti...@apache.org on 2016/04/29 21:05:36 UTC

svn commit: r1741691 - /pdfbox/branches/2.0/pdfbox/src/main/java/org/apache/pdfbox/pdmodel/interactive/digitalsignature/visible/PDVisibleSignDesigner.java

Author: tilman
Date: Fri Apr 29 19:05:36 2016
New Revision: 1741691

URL: http://svn.apache.org/viewvc?rev=1741691&view=rev
Log:
PDFBOX-2852: Avoid unclosed input stream, refactor double code

Modified:
    pdfbox/branches/2.0/pdfbox/src/main/java/org/apache/pdfbox/pdmodel/interactive/digitalsignature/visible/PDVisibleSignDesigner.java

Modified: pdfbox/branches/2.0/pdfbox/src/main/java/org/apache/pdfbox/pdmodel/interactive/digitalsignature/visible/PDVisibleSignDesigner.java
URL: http://svn.apache.org/viewvc/pdfbox/branches/2.0/pdfbox/src/main/java/org/apache/pdfbox/pdmodel/interactive/digitalsignature/visible/PDVisibleSignDesigner.java?rev=1741691&r1=1741690&r2=1741691&view=diff
==============================================================================
--- pdfbox/branches/2.0/pdfbox/src/main/java/org/apache/pdfbox/pdmodel/interactive/digitalsignature/visible/PDVisibleSignDesigner.java (original)
+++ pdfbox/branches/2.0/pdfbox/src/main/java/org/apache/pdfbox/pdmodel/interactive/digitalsignature/visible/PDVisibleSignDesigner.java Fri Apr 29 19:05:36 2016
@@ -17,6 +17,7 @@
 package org.apache.pdfbox.pdmodel.interactive.digitalsignature.visible;
 
 import java.awt.image.BufferedImage;
+import java.io.File;
 import java.io.FileInputStream;
 import java.io.IOException;
 import java.io.InputStream;
@@ -58,7 +59,11 @@ public class PDVisibleSignDesigner
     public PDVisibleSignDesigner(String filename, InputStream imageStream, int page)
             throws IOException
     {
-        this(new FileInputStream(filename), imageStream, page);
+        // set visible signature image Input stream
+        readImageStream(imageStream);
+
+        // calculate height and width of document page
+        calculatePageSizeFromFile(filename, page);
     }
 
     /**
@@ -75,13 +80,8 @@ public class PDVisibleSignDesigner
         // set visible signature image Input stream
         readImageStream(imageStream);
 
-        // create PD document
-        PDDocument document = PDDocument.load(documentStream);
-
         // calculate height and width of document page
-        calculatePageSize(document, page);
-
-        document.close();
+        calculatePageSizeFromStream(documentStream, page);
     }
 
     /**
@@ -109,7 +109,11 @@ public class PDVisibleSignDesigner
     public PDVisibleSignDesigner(String filename, BufferedImage image, int page)
             throws IOException
     {
-        this(new FileInputStream(filename), image, page);
+        // set visible signature image
+        setImage(image);
+
+        // calculate height and width of document page
+        calculatePageSizeFromFile(filename, page);
     }
 
     /**
@@ -126,13 +130,8 @@ public class PDVisibleSignDesigner
         // set visible signature image
         setImage(image);
 
-        // create PD document
-        PDDocument document = PDDocument.load(documentStream);
-
         // calculate height and width of document page
-        calculatePageSize(document, page);
-
-        document.close();
+        calculatePageSizeFromStream(documentStream, page);
     }
 
     /**
@@ -148,6 +147,28 @@ public class PDVisibleSignDesigner
         calculatePageSize(document, page);
     }
 
+    private void calculatePageSizeFromFile(String filename, int page) throws IOException
+    {
+        // create PD document
+        PDDocument document = PDDocument.load(new File(filename));
+
+        // calculate height and width of document page
+        calculatePageSize(document, page);
+
+        document.close();
+    }
+
+    private void calculatePageSizeFromStream(InputStream documentStream, int page) throws IOException
+    {
+        // create PD document
+        PDDocument document = PDDocument.load(documentStream);
+
+        // calculate height and width of document page
+        calculatePageSize(document, page);
+
+        document.close();
+    }
+
     /**
      * Each page of document can be different sizes. This method calculates the page size based on
      * the page media box.
@@ -163,7 +184,6 @@ public class PDVisibleSignDesigner
             throw new IllegalArgumentException("First page of pdf is 1, not " + page);
         }
 
-
         PDPage firstPage = document.getPage(page - 1);
         PDRectangle mediaBox = firstPage.getMediaBox();
         pageHeight(mediaBox.getHeight());