You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@pdfbox.apache.org by ms...@apache.org on 2015/03/07 16:43:27 UTC

svn commit: r1664877 - in /pdfbox/trunk/pdfbox/src/main/java/org/apache/pdfbox/pdmodel/interactive/form: AppearanceGeneratorHelper.java PlainText.java PlainTextFormatter.java

Author: msahyoun
Date: Sat Mar  7 15:43:26 2015
New Revision: 1664877

URL: http://svn.apache.org/r1664877
Log:
PDFBOX-1402 rename text alignment options; support justify alignment

Modified:
    pdfbox/trunk/pdfbox/src/main/java/org/apache/pdfbox/pdmodel/interactive/form/AppearanceGeneratorHelper.java
    pdfbox/trunk/pdfbox/src/main/java/org/apache/pdfbox/pdmodel/interactive/form/PlainText.java
    pdfbox/trunk/pdfbox/src/main/java/org/apache/pdfbox/pdmodel/interactive/form/PlainTextFormatter.java

Modified: pdfbox/trunk/pdfbox/src/main/java/org/apache/pdfbox/pdmodel/interactive/form/AppearanceGeneratorHelper.java
URL: http://svn.apache.org/viewvc/pdfbox/trunk/pdfbox/src/main/java/org/apache/pdfbox/pdmodel/interactive/form/AppearanceGeneratorHelper.java?rev=1664877&r1=1664876&r2=1664877&view=diff
==============================================================================
--- pdfbox/trunk/pdfbox/src/main/java/org/apache/pdfbox/pdmodel/interactive/form/AppearanceGeneratorHelper.java (original)
+++ pdfbox/trunk/pdfbox/src/main/java/org/apache/pdfbox/pdmodel/interactive/form/AppearanceGeneratorHelper.java Sat Mar  7 15:43:26 2015
@@ -353,7 +353,7 @@ class AppearanceGeneratorHelper
                                                     .text(textContent)
                                                     .width(borderEdge.getWidth() - paddingLeft - paddingRight)
                                                     .wrapLines(true)
-                                                    .hAlign(q)
+                                                    .textAlign(q)
                                                     .build();
             formatter.format();
 

Modified: pdfbox/trunk/pdfbox/src/main/java/org/apache/pdfbox/pdmodel/interactive/form/PlainText.java
URL: http://svn.apache.org/viewvc/pdfbox/trunk/pdfbox/src/main/java/org/apache/pdfbox/pdmodel/interactive/form/PlainText.java?rev=1664877&r1=1664876&r2=1664877&view=diff
==============================================================================
--- pdfbox/trunk/pdfbox/src/main/java/org/apache/pdfbox/pdmodel/interactive/form/PlainText.java (original)
+++ pdfbox/trunk/pdfbox/src/main/java/org/apache/pdfbox/pdmodel/interactive/form/PlainText.java Sat Mar  7 15:43:26 2015
@@ -242,6 +242,11 @@ class PlainText
         {
             return words;
         }
+        
+        float getInterWordSpacing(float width)
+        {
+            return (width - lineWidth)/(words.size()-1);
+        }
 
         void addWord(Word word)
         {

Modified: pdfbox/trunk/pdfbox/src/main/java/org/apache/pdfbox/pdmodel/interactive/form/PlainTextFormatter.java
URL: http://svn.apache.org/viewvc/pdfbox/trunk/pdfbox/src/main/java/org/apache/pdfbox/pdmodel/interactive/form/PlainTextFormatter.java?rev=1664877&r1=1664876&r2=1664877&view=diff
==============================================================================
--- pdfbox/trunk/pdfbox/src/main/java/org/apache/pdfbox/pdmodel/interactive/form/PlainTextFormatter.java (original)
+++ pdfbox/trunk/pdfbox/src/main/java/org/apache/pdfbox/pdmodel/interactive/form/PlainTextFormatter.java Sat Mar  7 15:43:26 2015
@@ -40,32 +40,32 @@ import org.apache.pdfbox.util.Charsets;
 class PlainTextFormatter
 {
     
-    enum HorizontalAlignment
+    enum TextAlign
     {
-        LEFT(0), CENTERED(1), RIGHT(2);
+        LEFT(0), CENTER(1), RIGHT(2), JUSTIFY(4);
         
-        private final int quadding;
+        private final int alignment;
         
-        private HorizontalAlignment(int quadding)
+        private TextAlign(int alignment)
         {
-            this.quadding = quadding;
+            this.alignment = alignment;
         }
         
-        int getQuadding()
+        int getTextAlign()
         {
-            return quadding;
+            return alignment;
         }
         
-        public static HorizontalAlignment valueOf(int quadding)
+        public static TextAlign valueOf(int alignment)
         {
-            for (HorizontalAlignment hAlignment : HorizontalAlignment.values())
+            for (TextAlign textAlignment : TextAlign.values())
             {
-                if (hAlignment.getQuadding() == quadding)
+                if (textAlignment.getTextAlign() == alignment)
                 {
-                    return hAlignment;
+                    return textAlignment;
                 }
             }
-            return HorizontalAlignment.LEFT;
+            return TextAlign.LEFT;
         }
     }
     
@@ -75,7 +75,7 @@ class PlainTextFormatter
     private final float width;
     private final OutputStream outputstream;
     private final PlainText textContent;
-    private final HorizontalAlignment hAlign;
+    private final TextAlign textAlignment;
     
     
     // number format
@@ -92,7 +92,7 @@ class PlainTextFormatter
         private boolean wrapLines = false;
         private float width = 0f;
         private PlainText textContent;
-        private HorizontalAlignment hAlign = HorizontalAlignment.LEFT;
+        private TextAlign textAlignment = TextAlign.LEFT;
         
         public Builder(OutputStream outputstream)
         {
@@ -117,9 +117,15 @@ class PlainTextFormatter
             return this;
         }
 
-        Builder hAlign(int quadding)
+        Builder textAlign(int alignment)
         {
-            this.hAlign  = HorizontalAlignment.valueOf(quadding);
+            this.textAlignment  = TextAlign.valueOf(alignment);
+            return this;
+        }
+        
+        Builder textAlign(TextAlign alignment)
+        {
+            this.textAlignment  = alignment;
             return this;
         }
         
@@ -143,7 +149,7 @@ class PlainTextFormatter
         width = builder.width;
         outputstream = builder.outputstream;
         textContent = builder.textContent;
-        hAlign = builder.hAlign;
+        textAlignment = builder.textAlignment;
     }
     
     /**
@@ -190,20 +196,24 @@ class PlainTextFormatter
 
         float lastPos = 0f;
         float startOffset = 0f;
+        float interWordSpacing = 0f;
 
         for (Line line : lines)
         {
-            switch (hAlign)
+            switch (textAlignment)
             {
-            case LEFT:
-                startOffset = 0f;
-                break;
-            case CENTERED:
+            case CENTER:
                 startOffset = (width - line.getWidth())/2;
                 break;
             case RIGHT:
                 startOffset = width - line.getWidth();
                 break;
+            case JUSTIFY:
+                if (lines.indexOf(line) != lines.size() -1)
+                {
+                    interWordSpacing = line.getInterWordSpacing(width);
+                }
+                break;
             default:
                 startOffset = 0f;
             }
@@ -219,8 +229,8 @@ class PlainTextFormatter
                 wordWidth = (Float) word.getAttributes().getIterator().getAttribute(TextAttribute.WIDTH);
                 if (words.indexOf(word) != words.size() -1)
                 {
-                    newLineAtOffset(wordWidth, 0f);
-                    lastPos = lastPos + wordWidth;
+                    newLineAtOffset(wordWidth + interWordSpacing, 0f);
+                    lastPos = lastPos + wordWidth + interWordSpacing;
                 }
             }
         }