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/12/06 17:51:42 UTC
svn commit: r1772928 - in /pdfbox/trunk:
debugger/src/main/java/org/apache/pdfbox/debugger/pagepane/DebugTextOverlay.java
examples/src/main/java/org/apache/pdfbox/examples/util/DrawPrintTextLocations.java
Author: tilman
Date: Tue Dec 6 17:51:42 2016
New Revision: 1772928
URL: http://svn.apache.org/viewvc?rev=1772928&view=rev
Log:
PDFBOX-3619: change drawing of red borders to include glyph rotation
Modified:
pdfbox/trunk/debugger/src/main/java/org/apache/pdfbox/debugger/pagepane/DebugTextOverlay.java
pdfbox/trunk/examples/src/main/java/org/apache/pdfbox/examples/util/DrawPrintTextLocations.java
Modified: pdfbox/trunk/debugger/src/main/java/org/apache/pdfbox/debugger/pagepane/DebugTextOverlay.java
URL: http://svn.apache.org/viewvc/pdfbox/trunk/debugger/src/main/java/org/apache/pdfbox/debugger/pagepane/DebugTextOverlay.java?rev=1772928&r1=1772927&r2=1772928&view=diff
==============================================================================
--- pdfbox/trunk/debugger/src/main/java/org/apache/pdfbox/debugger/pagepane/DebugTextOverlay.java (original)
+++ pdfbox/trunk/debugger/src/main/java/org/apache/pdfbox/debugger/pagepane/DebugTextOverlay.java Tue Dec 6 17:51:42 2016
@@ -137,16 +137,17 @@ final class DebugTextOverlay
{
if (DebugTextOverlay.this.showTextStripper)
{
+ AffineTransform at = (AffineTransform) flip.clone();
+ at.concatenate(text.getTextMatrix().createAffineTransform());
+
// in red:
// show rectangles with the "height" (not a real height, but used for text extraction
// heuristics, it is 1/2 of the bounding box height and starts at y=0)
- Rectangle2D.Float rect = new Rectangle2D.Float(
- text.getXDirAdj(),
- (text.getYDirAdj() - text.getHeightDir()),
- text.getWidthDirAdj(),
- text.getHeightDir());
+ Rectangle2D.Float rect = new Rectangle2D.Float(0, 0,
+ text.getWidthDirAdj() / text.getTextMatrix().getScalingFactorX(),
+ text.getHeightDir() / text.getTextMatrix().getScalingFactorY());
graphics.setColor(Color.red);
- graphics.draw(rect);
+ graphics.draw(at.createTransformedShape(rect));
}
if (DebugTextOverlay.this.showFontBBox)
Modified: pdfbox/trunk/examples/src/main/java/org/apache/pdfbox/examples/util/DrawPrintTextLocations.java
URL: http://svn.apache.org/viewvc/pdfbox/trunk/examples/src/main/java/org/apache/pdfbox/examples/util/DrawPrintTextLocations.java?rev=1772928&r1=1772927&r2=1772928&view=diff
==============================================================================
--- pdfbox/trunk/examples/src/main/java/org/apache/pdfbox/examples/util/DrawPrintTextLocations.java (original)
+++ pdfbox/trunk/examples/src/main/java/org/apache/pdfbox/examples/util/DrawPrintTextLocations.java Tue Dec 6 17:51:42 2016
@@ -286,17 +286,21 @@ public class DrawPrintTextLocations exte
+ text.getWidthOfSpace() + " width="
+ text.getWidthDirAdj() + "]" + text.getUnicode());
+ // glyph space -> user space
+ // note: text.getTextMatrix() is *not* the Text Matrix, it's the Text Rendering Matrix
+ AffineTransform at = text.getTextMatrix().createAffineTransform();
+
// in red:
// show rectangles with the "height" (not a real height, but used for text extraction
// heuristics, it is 1/2 of the bounding box height and starts at y=0)
- Rectangle2D.Float rect = new Rectangle2D.Float(
- text.getXDirAdj(),
- (text.getYDirAdj() - text.getHeightDir()),
- text.getWidthDirAdj(),
- text.getHeightDir());
- Shape sh = rotateAT.createTransformedShape(rect);
+ Rectangle2D.Float rect = new Rectangle2D.Float(0, 0,
+ text.getWidthDirAdj() / text.getTextMatrix().getScalingFactorX(),
+ text.getHeightDir() / text.getTextMatrix().getScalingFactorY());
+ Shape s = at.createTransformedShape(rect);
+ s = flipAT.createTransformedShape(s);
+ s = rotateAT.createTransformedShape(s);
g2d.setColor(Color.red);
- g2d.draw(sh);
+ g2d.draw(s);
// in blue:
// show rectangle with the real vertical bounds, based on the font bounding box y values
@@ -308,9 +312,6 @@ public class DrawPrintTextLocations exte
float xadvance = font.getWidth(text.getCharacterCodes()[0]); // todo: should iterate all chars
rect = new Rectangle2D.Float(0, bbox.getLowerLeftY(), xadvance, bbox.getHeight());
- // glyph space -> user space
- // note: text.getTextMatrix() is *not* the Text Matrix, it's the Text Rendering Matrix
- AffineTransform at = text.getTextMatrix().createAffineTransform();
if (font instanceof PDType3Font)
{
// bbox and font matrix are unscaled
@@ -321,8 +322,7 @@ public class DrawPrintTextLocations exte
// bbox and font matrix are already scaled to 1000
at.scale(1/1000f, 1/1000f);
}
- Shape s = at.createTransformedShape(rect);
-
+ s = at.createTransformedShape(rect);
s = flipAT.createTransformedShape(s);
s = rotateAT.createTransformedShape(s);