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 2015/11/16 15:20:39 UTC

svn commit: r1714590 - /pdfbox/trunk/pdfbox/src/main/java/org/apache/pdfbox/text/PDFTextStripper.java

Author: tilman
Date: Mon Nov 16 14:20:39 2015
New Revision: 1714590

URL: http://svn.apache.org/viewvc?rev=1714590&view=rev
Log:
PDFBOX-3110: adjust bead rectangles for flip and cropbox

Modified:
    pdfbox/trunk/pdfbox/src/main/java/org/apache/pdfbox/text/PDFTextStripper.java

Modified: pdfbox/trunk/pdfbox/src/main/java/org/apache/pdfbox/text/PDFTextStripper.java
URL: http://svn.apache.org/viewvc/pdfbox/trunk/pdfbox/src/main/java/org/apache/pdfbox/text/PDFTextStripper.java?rev=1714590&r1=1714589&r2=1714590&view=diff
==============================================================================
--- pdfbox/trunk/pdfbox/src/main/java/org/apache/pdfbox/text/PDFTextStripper.java (original)
+++ pdfbox/trunk/pdfbox/src/main/java/org/apache/pdfbox/text/PDFTextStripper.java Mon Nov 16 14:20:39 2015
@@ -820,6 +820,27 @@ public class PDFTextStripper extends PDF
                     if (bead != null)
                     {
                         PDRectangle rect = bead.getRectangle();
+                        
+                        // bead rectangle is in PDF coordinates (y=0 is bottom), 
+                        // glyphs are in image coordinates (y=0 is top),
+                        // so we must flip
+                        PDPage pdPage = getCurrentPage();
+                        PDRectangle mediaBox = pdPage.getMediaBox();
+                        float upperRightY = mediaBox.getUpperRightY() - rect.getLowerLeftY();
+                        float lowerLeftY = mediaBox.getUpperRightY() - rect.getUpperRightY();
+                        rect.setLowerLeftY(lowerLeftY);
+                        rect.setUpperRightY(upperRightY);
+                        
+                        // adjust for cropbox
+                        PDRectangle cropBox = pdPage.getCropBox();
+                        if (cropBox.getLowerLeftX() != 0 || cropBox.getLowerLeftY() != 0)
+                        {
+                            rect.setLowerLeftX(rect.getLowerLeftX() - cropBox.getLowerLeftX());
+                            rect.setLowerLeftY(rect.getLowerLeftY() - cropBox.getLowerLeftY());
+                            rect.setUpperRightX(rect.getUpperRightX() - cropBox.getLowerLeftX());
+                            rect.setUpperRightY(rect.getUpperRightY() - cropBox.getLowerLeftY());
+                        }
+                        
                         if (rect.contains(x, y))
                         {
                             foundArticleDivisionIndex = i * 2 + 1;