@@ -1522,8 +1522,7 @@ protected Rectangle calculateAbsolutePdfBBox() {
1522
1522
}
1523
1523
}
1524
1524
1525
- String [] transform = renderer .<String []>getProperty (Property .TRANSFORM );
1526
- if (transform != null ) {
1525
+ if (renderer .<List <String []>>getProperty (Property .TRANSFORM ) != null ) {
1527
1526
if (renderer instanceof BlockRenderer ) {
1528
1527
BlockRenderer blockRenderer = (BlockRenderer ) renderer ;
1529
1528
AffineTransform rotationTransform = blockRenderer .createTransformationInsideOccupiedArea ();
@@ -1850,19 +1849,24 @@ protected void endTranformationIfApplied(PdfCanvas canvas) {
1850
1849
}
1851
1850
}
1852
1851
1853
- private float [] getCssTransformMatrix (float width , float height ) {
1854
- String [] strings = this .<String []>getProperty (Property .TRANSFORM );
1855
- float [] floats = new float [6 ];
1856
- for (int i = 0 ; i < 6 ; i ++)
1857
- if (i == 4 || i == 5 ) {
1858
- int indexOfPercent = strings [i ].indexOf ('%' );
1859
- if (indexOfPercent > 0 )
1860
- floats [i ] = Float .parseFloat (strings [i ].substring (0 , indexOfPercent )) / 100 * (i == 4 ? width : height );
1852
+ private AffineTransform getCssTransformMatrix (float width , float height ) {
1853
+ List <String []> multipleTransform = this .<List <String []>>getProperty (Property .TRANSFORM );
1854
+ AffineTransform affineTransform = new AffineTransform ();
1855
+ for (int k = multipleTransform .size () - 1 ; k >=0 ; k --) {
1856
+ String [] transform = multipleTransform .get (k );
1857
+ float [] floats = new float [6 ];
1858
+ for (int i = 0 ; i < 6 ; i ++)
1859
+ if (i == 4 || i == 5 ) {
1860
+ int indexOfPercent = transform [i ].indexOf ('%' );
1861
+ if (indexOfPercent > 0 )
1862
+ floats [i ] = Float .parseFloat (transform [i ].substring (0 , indexOfPercent )) / 100 * (i == 4 ? width : height );
1863
+ else
1864
+ floats [i ] = Float .parseFloat (transform [i ]);
1865
+ }
1861
1866
else
1862
- floats [i ] = Float .parseFloat (strings [i ]);
1863
- }
1864
- else
1865
- floats [i ] = Float .parseFloat (strings [i ]);
1866
- return floats ;
1867
+ floats [i ] = Float .parseFloat (transform [i ]);
1868
+ affineTransform .preConcatenate (new AffineTransform (floats ));
1869
+ }
1870
+ return affineTransform ;
1867
1871
}
1868
1872
}
0 commit comments