You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@pdfbox.apache.org by le...@apache.org on 2012/10/14 14:35:44 UTC
svn commit: r1398069 -
/pdfbox/trunk/pdfbox/src/main/java/org/apache/pdfbox/pdmodel/PDPage.java
Author: lehmi
Date: Sun Oct 14 12:35:43 2012
New Revision: 1398069
URL: http://svn.apache.org/viewvc?rev=1398069&view=rev
Log:
PDFBOX-1427: fixed page rotation as proposed by Ravi Hegde
Modified:
pdfbox/trunk/pdfbox/src/main/java/org/apache/pdfbox/pdmodel/PDPage.java
Modified: pdfbox/trunk/pdfbox/src/main/java/org/apache/pdfbox/pdmodel/PDPage.java
URL: http://svn.apache.org/viewvc/pdfbox/trunk/pdfbox/src/main/java/org/apache/pdfbox/pdmodel/PDPage.java?rev=1398069&r1=1398068&r2=1398069&view=diff
==============================================================================
--- pdfbox/trunk/pdfbox/src/main/java/org/apache/pdfbox/pdmodel/PDPage.java (original)
+++ pdfbox/trunk/pdfbox/src/main/java/org/apache/pdfbox/pdmodel/PDPage.java Sun Oct 14 12:35:43 2012
@@ -708,8 +708,17 @@ public class PDPage implements COSObject
//TODO The following reduces accuracy. It should really be a Dimension2D.Float.
Dimension pageDimension = new Dimension( (int)widthPt, (int)heightPt );
BufferedImage retval = null;
- float rotation = (float)Math.toRadians(findRotation());
- if (rotation != 0)
+ int rotationAngle = findRotation();
+ // normalize the rotation angle
+ if (rotationAngle < 0)
+ {
+ rotationAngle += 360;
+ }
+ else if (rotationAngle >= 360)
+ {
+ rotationAngle -= 360;
+ }
+ if (rotationAngle != 0)
{
retval = new BufferedImage( heightPx, widthPx, imageType );
}
@@ -720,10 +729,27 @@ public class PDPage implements COSObject
Graphics2D graphics = (Graphics2D)retval.getGraphics();
graphics.setBackground( TRANSPARENT_WHITE );
graphics.clearRect( 0, 0, retval.getWidth(), retval.getHeight() );
- if (rotation != 0)
+ if (rotationAngle != 0)
{
- graphics.translate(retval.getWidth(), 0.0f);
- graphics.rotate(rotation);
+ int translateX = 0;
+ int translateY = 0;
+ switch(rotationAngle)
+ {
+ case 90:
+ translateX = retval.getWidth();
+ break;
+ case 270:
+ translateY = retval.getHeight();
+ break;
+ case 180:
+ translateX = retval.getWidth();
+ translateY = retval.getHeight();
+ break;
+ default:
+ break;
+ }
+ graphics.translate(translateX,translateY);
+ graphics.rotate((float)Math.toRadians(rotationAngle));
}
graphics.scale( scaling, scaling );
PageDrawer drawer = new PageDrawer();
@@ -801,6 +827,7 @@ public class PDPage implements COSObject
/**
* @deprecated Use the {@link PDPageable} adapter class
+ * {@inheritDoc}
*/
public int print(Graphics graphics, PageFormat pageFormat, int pageIndex)
throws PrinterException