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();
}
-
}