You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@pdfbox.apache.org by ja...@apache.org on 2014/04/10 22:13:54 UTC

svn commit: r1586460 - /pdfbox/trunk/pdfbox/src/main/java/org/apache/pdfbox/rendering/PDFRenderer.java

Author: jahewson
Date: Thu Apr 10 20:13:53 2014
New Revision: 1586460

URL: http://svn.apache.org/r1586460
Log:
PDFBOX-2021: fix regression in PDFRenderer

Modified:
    pdfbox/trunk/pdfbox/src/main/java/org/apache/pdfbox/rendering/PDFRenderer.java

Modified: pdfbox/trunk/pdfbox/src/main/java/org/apache/pdfbox/rendering/PDFRenderer.java
URL: http://svn.apache.org/viewvc/pdfbox/trunk/pdfbox/src/main/java/org/apache/pdfbox/rendering/PDFRenderer.java?rev=1586460&r1=1586459&r2=1586460&view=diff
==============================================================================
--- pdfbox/trunk/pdfbox/src/main/java/org/apache/pdfbox/rendering/PDFRenderer.java (original)
+++ pdfbox/trunk/pdfbox/src/main/java/org/apache/pdfbox/rendering/PDFRenderer.java Thu Apr 10 20:13:53 2014
@@ -174,14 +174,12 @@ public class PDFRenderer
         PDPage page = document.getPage(pageIndex);
         // TODO need width/wight calculations? should these be in PageDrawer?
         PDRectangle cropBox = page.findCropBox();
-        renderPageToGraphics(page, graphics, (int)cropBox.getWidth(), (int)cropBox.getHeight(), scale, scale);
+        renderPage(page, graphics, (int)cropBox.getWidth(), (int)cropBox.getHeight(), scale, scale);
     }
 
     // renders a page to the given graphics
-    // TODO 1: need to be able to override this
-    // TODO 2: merge this with private renderPage per DRY, fix regressions related to PDFBOX-2021
-    //      test rendering and printing of PDFBOX-758, PDFBOX-427, PDFBOX-1435 and PDFBOX-1693
-    private void renderPageToGraphics(PDPage page, Graphics2D graphics, int width, int height, float scaleX,
+    // TODO need to be able to override this
+    private void renderPage(PDPage page, Graphics2D graphics, int width, int height, float scaleX,
                             float scaleY) throws IOException
     {
         graphics.clearRect(0, 0, width, height);
@@ -189,20 +187,21 @@ public class PDFRenderer
         graphics.scale(scaleX, scaleY);
         // TODO should we be passing the scale to PageDrawer rather than messing with Graphics?
 
+        PDRectangle cropBox = page.findCropBox();
         int rotationAngle = page.findRotation();
         if (rotationAngle != 0)
         {
-            int translateX = 0;
-            int translateY = 0;
+            float translateX = 0;
+            float translateY = 0;
             switch (rotationAngle)
             {
                 case 90:
                 case 270:
-                    translateX = height;
+                    translateX = cropBox.getHeight();
                     break;
                 case 180:
-                    translateX = width;
-                    translateY = height;
+                    translateX = cropBox.getWidth();
+                    translateY = cropBox.getHeight();
                     break;
             }
             graphics.translate(translateX, translateY);
@@ -210,44 +209,7 @@ public class PDFRenderer
         }
 
         PageDrawer drawer = new PageDrawer(this);   // TODO: need to make it easy to use a custom PageDrawer
-        drawer.drawPage(graphics, page, page.findCropBox());
-        drawer.dispose();
-    }
-    
-    // renders a page to the given graphics
-    // TODO need to be able to override this
-    private void renderPage(PDPage page, Graphics2D graphics, int width, int height, float scaleX,
-                            float scaleY) throws IOException
-    {
-        graphics.clearRect(0, 0, width, height);
-        int rotationAngle = page.findRotation();
-        if (rotationAngle != 0)
-        {
-            int translateX = 0;
-            int translateY = 0;
-            switch (rotationAngle)
-            {
-                case 90:
-                translateX = width;
-                break;
-                case 270:
-                translateY = height;
-                    break;
-                case 180:
-                    translateX = width;
-                    translateY = height;
-                    break;
-            default:
-                break;
-            }
-            graphics.translate(translateX, translateY);
-            graphics.rotate((float) Math.toRadians(rotationAngle));
-        }
-        // TODO should we be passing the scale to PageDrawer rather than messing with Graphics?
-        graphics.scale(scaleX, scaleY);
-        PageDrawer drawer = new PageDrawer(this);   // TODO: need to make it easy to use a custom PageDrawer
-        drawer.drawPage(graphics, page, page.findCropBox());
+        drawer.drawPage(graphics, page, cropBox);
         drawer.dispose();
     }
-    
 }