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 {