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;