[
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