Hi Tilman,
to give you some insight,
my issue is that I get wrong values for the angle of text when using the
calculation as you propose in TextPosition.java:
int angle = (int) Math.round(Math.toDegrees(Math.atan2(m.getShearY(),
m.getScaleY())));
After some more digging I think the issue I see comes from SetMatrix.java where
a Matrix is instantiated from a set of COSNumber values.
--> The incoming parameters from a PDF file are
"scaleX shearX shearY scaleY transX transY Tm"
[Code from SetMatrix.java]
COSNumber a = (COSNumber)arguments.get( 0 ); // scaleX
COSNumber b = (COSNumber)arguments.get( 1 ); // shearX
COSNumber c = (COSNumber)arguments.get( 2 ); // shearY
COSNumber d = (COSNumber)arguments.get( 3 ); // scaleY
COSNumber e = (COSNumber)arguments.get( 4 ); // transX
COSNumber f = (COSNumber)arguments.get( 5 ); // transY
So the assignments are effectively:
a = scaleX
b = shearX
c = shearY
d = scaleY
e = transX
f = transY
--> the Matrix is instantiated as follows:
[Code from SetMatrix.java]
Matrix matrix = new Matrix(a.floatValue(), b.floatValue(), c.floatValue(),
d.floatValue(), e.floatValue(), f.floatValue());
Analysis:
Effectively the constructor for the Matrix gets (in SetMatrix ) in pseudo code
the following parameters from a PDF file:
new Matrix( scaleX , shearX , shearY , scaleY , transX , transY )
but expects
new Matrix( scaleX , shearY, shearX , scaleY , transX , trans Y )
--> ISSUE: So I think that here shearX and shearY are exchanged when calling
the constructor.
Stefan
---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]