Author: tilman
Date: Mon Jul 27 08:37:00 2026
New Revision: 1936615
Log:
PDFBOX-6223: refactor computation of new BBox
Modified:
pdfbox/branches/2.0/pdfbox/src/main/java/org/apache/pdfbox/pdmodel/interactive/form/AppearanceGeneratorHelper.java
Modified:
pdfbox/branches/2.0/pdfbox/src/main/java/org/apache/pdfbox/pdmodel/interactive/form/AppearanceGeneratorHelper.java
==============================================================================
---
pdfbox/branches/2.0/pdfbox/src/main/java/org/apache/pdfbox/pdmodel/interactive/form/AppearanceGeneratorHelper.java
Mon Jul 27 08:31:04 2026 (r1936614)
+++
pdfbox/branches/2.0/pdfbox/src/main/java/org/apache/pdfbox/pdmodel/interactive/form/AppearanceGeneratorHelper.java
Mon Jul 27 08:37:00 2026 (r1936615)
@@ -300,14 +300,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()) {
appearanceStream.setMatrix(at);
@@ -317,13 +312,22 @@ class AppearanceGeneratorHelper {
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) {
// 0 is the default value if the R key doesn't exist