Author: tilman
Date: Mon Jul 27 08:37:03 2026
New Revision: 1936616

Log:
PDFBOX-6223: refactor computation of new BBox

Modified:
   
pdfbox/trunk/pdfbox/src/main/java/org/apache/pdfbox/pdmodel/interactive/form/AppearanceGeneratorHelper.java

Modified: 
pdfbox/trunk/pdfbox/src/main/java/org/apache/pdfbox/pdmodel/interactive/form/AppearanceGeneratorHelper.java
==============================================================================
--- 
pdfbox/trunk/pdfbox/src/main/java/org/apache/pdfbox/pdmodel/interactive/form/AppearanceGeneratorHelper.java
 Mon Jul 27 08:37:00 2026        (r1936615)
+++ 
pdfbox/trunk/pdfbox/src/main/java/org/apache/pdfbox/pdmodel/interactive/form/AppearanceGeneratorHelper.java
 Mon Jul 27 08:37:03 2026        (r1936616)
@@ -323,14 +323,9 @@ class AppearanceGeneratorHelper
 
         // Calculate the entries for the bounding box and the transformation 
matrix
         // settings for the appearance stream
-        int rotation = resolveRotation(widget);
-        PDRectangle rect = widget.getRectangle();
-        Matrix matrix = Matrix.getRotateInstance(Math.toRadians(rotation), 0, 
0);
-        Point2D.Float point2D = matrix.transformPoint(rect.getWidth(), 
rect.getHeight());
-
-        PDRectangle bbox = new PDRectangle(Math.abs((float) point2D.getX()), 
Math.abs((float) point2D.getY()));
+        PDRectangle bbox = computeBBox(widget);
         appearanceStream.setBBox(bbox);
-
+        int rotation = resolveRotation(widget);
         AffineTransform at = calculateMatrix(bbox, rotation);
         if (!at.isIdentity())
         {
@@ -340,15 +335,23 @@ class AppearanceGeneratorHelper
         appearanceStream.setResources(new PDResources());
         return appearanceStream;
     }
-    
+
+    private static PDRectangle computeBBox(PDAnnotationWidget widget)
+    {
+        PDRectangle rect = widget.getRectangle();
+        Matrix matrix = 
Matrix.getRotateInstance(Math.toRadians(resolveRotation(widget)), 0, 0);
+        Point2D.Float point2D = matrix.transformPoint(rect.getWidth(), 
rect.getHeight());
+        return new PDRectangle(Math.abs((float) point2D.getX()), 
Math.abs((float) point2D.getY()));
+    }
+
     private PDDefaultAppearanceString 
getWidgetDefaultAppearanceString(PDAnnotationWidget widget) throws IOException
     {
         COSString da = (COSString) 
widget.getCOSObject().getDictionaryObject(COSName.DA);
         PDResources dr = field.getAcroForm().getDefaultResources();
         return new PDDefaultAppearanceString(da, dr);
     }
-    
-    private int resolveRotation(PDAnnotationWidget widget)
+
+    private static int resolveRotation(PDAnnotationWidget widget)
     {
         PDAppearanceCharacteristicsDictionary  characteristicsDictionary = 
widget.getAppearanceCharacteristics();
         if (characteristicsDictionary != null)

Reply via email to