Author: tilman
Date: Tue Jan 29 20:40:12 2019
New Revision: 1852475
URL: http://svn.apache.org/viewvc?rev=1852475&view=rev
Log:
PDFBOX-4447: support NoRotate flag
Modified:
pdfbox/trunk/pdfbox/src/main/java/org/apache/pdfbox/rendering/PageDrawer.java
Modified: pdfbox/trunk/pdfbox/src/main/java/org/apache/pdfbox/rendering/PageDrawer.java
URL: http://svn.apache.org/viewvc/pdfbox/trunk/pdfbox/src/main/java/org/apache/pdfbox/rendering/PageDrawer.java?rev=1852475&r1=1852474&r2=1852475&view=diff
==============================================================================
--- pdfbox/trunk/pdfbox/src/main/java/org/apache/pdfbox/rendering/PageDrawer.java (original)
+++ pdfbox/trunk/pdfbox/src/main/java/org/apache/pdfbox/rendering/PageDrawer.java Tue Jan 29 20:40:12 2019
@@ -1195,7 +1195,7 @@ public class PageDrawer extends PDFGraph
public void showAnnotation(PDAnnotation annotation) throws IOException
{
lastClip = null;
- //TODO support more annotation flags (Invisible, NoZoom, NoRotate)
+ //TODO support more annotation flags (Invisible, NoZoom)
// Example for NoZoom can be found in p5 of PDFBOX-2348
int deviceType = -1;
if (graphics.getDeviceConfiguration() != null &&
@@ -1240,7 +1240,21 @@ public class PageDrawer extends PDFGraph
// TODO: Improve memory consumption by passing a ScratchFile
annotation.constructAppearances();
}
- super.showAnnotation(annotation);
+ if (annotation.isNoRotate() && getCurrentPage().getRotation() != 0)
+ {
+ PDRectangle rect = annotation.getRectangle();
+ AffineTransform savedTransform = graphics.getTransform();
+ // "The upper-left corner of the annotation remains at the same point in
+ // default user space; the annotation pivots around that point."
+ graphics.rotate(Math.toRadians(getCurrentPage().getRotation()),
+ rect.getLowerLeftX(), rect.getUpperRightY());
+ super.showAnnotation(annotation);
+ graphics.setTransform(savedTransform);
+ }
+ else
+ {
+ super.showAnnotation(annotation);
+ }
}
/**