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 2016/05/26 19:42:30 UTC

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

Author: tilman
Date: Thu May 26 19:42:30 2016
New Revision: 1745635

URL: http://svn.apache.org/viewvc?rev=1745635&view=rev
Log:
PDFBOX-3359: move clearing after all transform operations, simplify code

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=1745635&r1=1745634&r2=1745635&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 May 26 19:42:30 2016
@@ -136,7 +136,7 @@ public class PDFRenderer
             g.setBackground(Color.WHITE);
         }
 
-        renderPage(page, g, image.getWidth(), image.getHeight(), scale, scale);
+        renderPage(page, g, scale);
         g.dispose();
 
         return image;
@@ -165,18 +165,14 @@ public class PDFRenderer
     {
         PDPage page = document.getPage(pageIndex);
         // TODO need width/wight calculations? should these be in PageDrawer?
-        PDRectangle adjustedCropBox = page.getCropBox();
-        renderPage(page, graphics, (int)adjustedCropBox.getWidth(), (int)adjustedCropBox.getHeight(), scale, scale);
+        renderPage(page, graphics, scale);
     }
 
     // renders a page to the given graphics
-    private void renderPage(PDPage page, Graphics2D graphics, int width, int height, float scaleX,
-                            float scaleY) throws IOException
+    private void renderPage(PDPage page, Graphics2D graphics, float scale) throws IOException
     {
-        graphics.scale(scaleX, scaleY);
+        graphics.scale(scale, scale);
         // TODO should we be passing the scale to PageDrawer rather than messing with Graphics?
-        
-        graphics.clearRect(0, 0, width, height);
 
         PDRectangle cropBox = page.getCropBox();
         int rotationAngle = page.getRotation();
@@ -201,6 +197,16 @@ public class PDFRenderer
             graphics.translate(translateX, translateY);
             graphics.rotate((float) Math.toRadians(rotationAngle));
         }
+        
+        if (scale < 1)
+        {
+            // avoid black line
+            graphics.clearRect(0, 0, (int) (cropBox.getWidth() + 1), (int) (cropBox.getHeight() + 1));
+        }
+        else
+        {
+            graphics.clearRect(0, 0, (int) cropBox.getWidth(), (int) cropBox.getHeight());
+        }
 
         // the end-user may provide a custom PageDrawer
         PageDrawerParameters parameters = new PageDrawerParameters(this, page);