[ 
https://issues.apache.org/jira/browse/PDFBOX-1427?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=13485677#comment-13485677
 ] 

Ravi Hegde commented on PDFBOX-1427:
------------------------------------

Sorry for that surprise I created! By the time you saw my post and commented I 
tested the code and found it to be a bug. I deleted the comment and raised 
another bug report with a patch - PDFBOX-1432.
                
> PDF page rotation is not working
> --------------------------------
>
>                 Key: PDFBOX-1427
>                 URL: https://issues.apache.org/jira/browse/PDFBOX-1427
>             Project: PDFBox
>          Issue Type: Bug
>          Components: PDModel
>    Affects Versions: 1.7.1
>         Environment: Ubuntu 11.10 64 bit on Intel® Core™ i5-2430M CPU. Sun 
> JDK "1.6.0_30" (build 1.6.0_30-b12) Java HotSpot(TM) 64-Bit Server VM (build 
> 20.5-b03, mixed mode).
>            Reporter: Ravi Hegde
>            Assignee: Andreas Lehmkühler
>              Labels: patch
>             Fix For: 1.8.0
>
>
> PDFToImage creates empty images when PDF with page rotation is provided as 
> input. Rotation logic in PDPage is not correct. Because of this problem PDF 
> contents are rendered outside the graphics area. Hence it creates empty 
> images. Patch file is below. Tested on pdf 
> http://eeweb.poly.edu/~yao/EE3414/image_filtering.pdf
> ---------------------------------------------------------------------
> --- 
> /data/pdf/pdfbox/pdfbox-svn/trunk/pdfbox/src/main/java/org/apache/pdfbox/pdmodel/PDPage.java
>       2012-10-14 08:45:34.275123749 +0530
> +++ 
> /data/pdf/pdfbox/pdfbox-1.7.1/pdfbox/src/main/java/org/apache/pdfbox/pdmodel/PDPage.java
>   2012-10-14 13:37:16.887054874 +0530
> @@ -708,8 +708,13 @@
>          //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();
> +        //PDF spec does not say rotation angle should be within 360 degrees
> +        //Restrict rotation to -360 to +360 degrees range.
> +        rotationAngle = rotationAngle % 360;
> +        float rotation = (float)Math.toRadians(rotationAngle);
> +        //Flip the image horizontally only for +/-90 and +/-270 degree 
> rotation
> +        if ((rotationAngle % 180) != 0)
>          {
>              retval = new BufferedImage( heightPx, widthPx, imageType );
>          }
> @@ -722,7 +727,26 @@
>          graphics.clearRect( 0, 0, retval.getWidth(), retval.getHeight() );
>          if (rotation != 0)
>          {
> -            graphics.translate(retval.getWidth(), 0.0f);
> +            int translateX = 0;
> +            int translateY = 0;
> +            switch(rotationAngle) {
> +                case -270:
> +                case 90:
> +                    translateX = retval.getWidth();
> +                break;
> +
> +                case -90:
> +                case 270:
> +                    translateY = retval.getHeight();
> +                break;
> +
> +                case -180:
> +                case 180:
> +                    translateX = retval.getWidth();
> +                    translateY = retval.getHeight();
> +                break;
> +            }
> +            graphics.translate(translateX,translateY);
>              graphics.rotate(rotation);
>          }
>          graphics.scale( scaling, scaling );
> ---------------------------------------------------------------------

--
This message is automatically generated by JIRA.
If you think it was sent incorrectly, please contact your JIRA administrators
For more information on JIRA, see: http://www.atlassian.com/software/jira

Reply via email to