[
https://issues.apache.org/jira/browse/PDFBOX-1427?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel
]
Ravi Hegde updated PDFBOX-1427:
-------------------------------
Comment: was deleted
(was: Looking at the committed file: I believe it is necessary to swap width
and height only if the rotation angle is 90 or 180 degrees. Code swaps width
and height for all rotation angles. Is it necessary to swap width and height
for all rotation angles?
721 if (rotationAngle != 0)
722 {
723 retval = new BufferedImage( heightPx, widthPx, imageType );
724 }
725 else
726 {
727 retval = new BufferedImage( widthPx, heightPx, imageType );
728 }
)
> 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