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

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

Author: tilman
Date: Thu Apr 10 17:29:52 2014
New Revision: 1586380

URL: http://svn.apache.org/r1586380
Log:
PDFBOX-2021: split "old" rendering and printing (renderPageToGraphics) to separate leaf methods

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=1586380&r1=1586379&r2=1586380&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 17:29:52 2014
@@ -174,12 +174,14 @@ public class PDFRenderer
         PDPage page = document.getPage(pageIndex);
         // TODO need width/wight calculations? should these be in PageDrawer?
         PDRectangle cropBox = page.findCropBox();
-        renderPage(page, graphics, (int)cropBox.getWidth(), (int)cropBox.getHeight(), scale, scale);
+        renderPageToGraphics(page, graphics, (int)cropBox.getWidth(), (int)cropBox.getHeight(), scale, scale);
     }
 
     // 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,
+    // 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,
                             float scaleY) throws IOException
     {
         graphics.clearRect(0, 0, width, height);
@@ -211,4 +213,41 @@ public class PDFRenderer
         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.dispose();
+    }
+    
 }