You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@pdfbox.apache.org by ms...@apache.org on 2018/02/02 19:02:25 UTC

svn commit: r1823000 - /pdfbox/trunk/pdfbox/src/main/java/org/apache/pdfbox/pdmodel/interactive/annotation/handlers/PDSquareAppearanceHandler.java

Author: msahyoun
Date: Fri Feb  2 19:02:24 2018
New Revision: 1823000

URL: http://svn.apache.org/viewvc?rev=1823000&view=rev
Log:
PDFBOX-4092: adjust BBox and Matrix when there was no AP at all to match the new /Rect

Modified:
    pdfbox/trunk/pdfbox/src/main/java/org/apache/pdfbox/pdmodel/interactive/annotation/handlers/PDSquareAppearanceHandler.java

Modified: pdfbox/trunk/pdfbox/src/main/java/org/apache/pdfbox/pdmodel/interactive/annotation/handlers/PDSquareAppearanceHandler.java
URL: http://svn.apache.org/viewvc/pdfbox/trunk/pdfbox/src/main/java/org/apache/pdfbox/pdmodel/interactive/annotation/handlers/PDSquareAppearanceHandler.java?rev=1823000&r1=1822999&r2=1823000&view=diff
==============================================================================
--- pdfbox/trunk/pdfbox/src/main/java/org/apache/pdfbox/pdmodel/interactive/annotation/handlers/PDSquareAppearanceHandler.java (original)
+++ pdfbox/trunk/pdfbox/src/main/java/org/apache/pdfbox/pdmodel/interactive/annotation/handlers/PDSquareAppearanceHandler.java Fri Feb  2 19:02:24 2018
@@ -17,6 +17,7 @@
 
 package org.apache.pdfbox.pdmodel.interactive.annotation.handlers;
 
+import java.awt.geom.AffineTransform;
 import java.io.IOException;
 import org.apache.commons.logging.Log;
 import org.apache.commons.logging.LogFactory;
@@ -66,7 +67,7 @@ public class PDSquareAppearanceHandler e
                 
                 handleOpacity(annotation.getConstantOpacity());
                 
-                contentStream.setBorderLine(lineWidth, annotation.getBorderStyle());
+                contentStream.setBorderLine(lineWidth, annotation.getBorderStyle());                
                 
                 // handle the border box
                 // 
@@ -87,6 +88,13 @@ public class PDSquareAppearanceHandler e
                     // TODO: this only works for border effect solid. Cloudy needs a different approach.
                     annotation.setRectDifferences(lineWidth/2);
                     annotation.setRectangle(addRectDifferences(getRectangle(), annotation.getRectDifferences()));
+                    
+                    // when the normal appearance stream was generated BBox and Matrix have been set to the
+                    // values of the original /Rect. As the /Rect was changed that needs to be adjusted too.
+                    annotation.getNormalAppearanceStream().setBBox(getRectangle());
+                    AffineTransform transform = AffineTransform.getTranslateInstance(-getRectangle().getLowerLeftX(),
+                            -getRectangle().getLowerLeftY());
+                    annotation.getNormalAppearanceStream().setMatrix(transform);
                 }
                 else
                 {