@@ -788,7 +788,7 @@ protected boolean clipBackgroundArea(DrawContext drawContext, Rectangle outerBor
788
788
public void drawChildren (DrawContext drawContext ) {
789
789
List <IRenderer > waitingRenderers = new ArrayList <>();
790
790
for (IRenderer child : childRenderers ) {
791
- if (FloatingHelper .isRendererFloating (child ) || child .getProperty (Property .TRANSFORM ) != null ) {
791
+ if (FloatingHelper .isRendererFloating (child ) || child .< String []> getProperty (Property .TRANSFORM ) != null ) {
792
792
RootRenderer rootRenderer = getRootRenderer ();
793
793
if (rootRenderer != null && !rootRenderer .waitingDrawingElements .contains (child )) {
794
794
rootRenderer .waitingDrawingElements .add (child );
@@ -1522,7 +1522,7 @@ protected Rectangle calculateAbsolutePdfBBox() {
1522
1522
}
1523
1523
}
1524
1524
1525
- float [] transform = renderer .<float []>getProperty (Property .TRANSFORM );
1525
+ String [] transform = renderer .<String []>getProperty (Property .TRANSFORM );
1526
1526
if (transform != null ) {
1527
1527
if (renderer instanceof BlockRenderer ) {
1528
1528
BlockRenderer blockRenderer = (BlockRenderer ) renderer ;
@@ -1831,22 +1831,38 @@ protected AffineTransform createTransformationInsideOccupiedArea() {
1831
1831
float width = backgroundArea .getWidth ();
1832
1832
1833
1833
AffineTransform transform = AffineTransform .getTranslateInstance (-1 * (x + width / 2 ), -1 * (y + height / 2 ));
1834
- transform .preConcatenate (( new AffineTransform (( float []) this .getProperty ( Property . TRANSFORM ) )));
1834
+ transform .preConcatenate (new AffineTransform (this .getCssTransformMatrix ( width , height )));
1835
1835
transform .preConcatenate (AffineTransform .getTranslateInstance (x + width / 2 , y + height / 2 ));
1836
1836
1837
1837
return transform ;
1838
1838
}
1839
1839
1840
1840
protected void beginTranformationIfApplied (PdfCanvas canvas ) {
1841
- if (this .getProperty (Property .TRANSFORM ) != null ) {
1841
+ if (this .< String []> getProperty (Property .TRANSFORM ) != null ) {
1842
1842
AffineTransform transform = createTransformationInsideOccupiedArea ();
1843
1843
canvas .saveState ().concatMatrix (transform );
1844
1844
}
1845
1845
}
1846
1846
1847
1847
protected void endTranformationIfApplied (PdfCanvas canvas ) {
1848
- if (this .getProperty (Property .TRANSFORM ) != null ) {
1848
+ if (this .< String []> getProperty (Property .TRANSFORM ) != null ) {
1849
1849
canvas .restoreState ();
1850
1850
}
1851
1851
}
1852
+
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 );
1861
+ else
1862
+ floats [i ] = Float .parseFloat (strings [i ]);
1863
+ }
1864
+ else
1865
+ floats [i ] = Float .parseFloat (strings [i ]);
1866
+ return floats ;
1867
+ }
1852
1868
}
0 commit comments