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 2017/01/31 20:33:31 UTC

svn commit: r1781165 - /pdfbox/trunk/pdfbox/src/main/java/org/apache/pdfbox/pdmodel/interactive/digitalsignature/visible/PDVisibleSignDesigner.java

Author: tilman
Date: Tue Jan 31 20:33:30 2017
New Revision: 1781165

URL: http://svn.apache.org/viewvc?rev=1781165&view=rev
Log:
PDFBOX-3671: introduce new method to adjust signature position for rotated pages

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

Modified: pdfbox/trunk/pdfbox/src/main/java/org/apache/pdfbox/pdmodel/interactive/digitalsignature/visible/PDVisibleSignDesigner.java
URL: http://svn.apache.org/viewvc/pdfbox/trunk/pdfbox/src/main/java/org/apache/pdfbox/pdmodel/interactive/digitalsignature/visible/PDVisibleSignDesigner.java?rev=1781165&r1=1781164&r2=1781165&view=diff
==============================================================================
--- pdfbox/trunk/pdfbox/src/main/java/org/apache/pdfbox/pdmodel/interactive/digitalsignature/visible/PDVisibleSignDesigner.java (original)
+++ pdfbox/trunk/pdfbox/src/main/java/org/apache/pdfbox/pdmodel/interactive/digitalsignature/visible/PDVisibleSignDesigner.java Tue Jan 31 20:33:30 2017
@@ -51,6 +51,7 @@ public class PDVisibleSignDesigner
     private byte[] formatterRectangleParams = { 0, 0, 100, 50 };
     private AffineTransform affineTransform = new AffineTransform();
     private float imageSizeInPercents;
+    private int rotation = 0;
 
     /**
      * Constructor.
@@ -193,6 +194,57 @@ public class PDVisibleSignDesigner
         pageHeight(mediaBox.getHeight());
         pageWidth = mediaBox.getWidth();
         imageSizeInPercents = 100;
+        rotation = firstPage.getRotation() % 360;
+    }
+
+    /**
+     * Adjust signature for page rotation. This is optional, call this after all x and y coordinates
+     * have been set if you want the signature to be postioned regardless of page orientation.
+     *
+     * @return Visible Signature Configuration Object
+     */
+    public PDVisibleSignDesigner adjustForRotation()
+    {
+        switch (rotation)
+        {
+            case 90:
+                float temp = yAxis;
+                yAxis = pageHeight - xAxis - imageWidth;
+                xAxis = temp;
+
+                temp = imageHeight;
+                imageHeight = imageWidth;
+                imageWidth = temp;
+
+                affineTransform = new AffineTransform(0, 0.5, -2, 0, 100, 0);
+                break;
+                
+            case 180:
+                float newX = pageWidth - xAxis - imageWidth;
+                float newY = pageHeight - yAxis - imageHeight;
+                xAxis = newX;
+                yAxis = newY;
+                
+                affineTransform = new AffineTransform(-1, 0, 0, -1, 100, 50);
+                break;
+
+            case 270:
+                temp = xAxis;
+                xAxis = pageWidth - yAxis - imageHeight;
+                yAxis = temp;
+
+                temp = imageHeight;
+                imageHeight = imageWidth;
+                imageWidth = temp;
+
+                affineTransform = new AffineTransform(0, -0.5, 2, 0, 0, 50);
+                break;
+
+            case 0:
+            default:
+                break;
+        }
+        return this;
     }
 
     /**