Author: msahyoun
Date: Fri Aug 13 17:35:08 2021
New Revision: 1892312

URL: http://svn.apache.org/viewvc?rev=1892312&view=rev
Log:
PDFBOX-5256: support quadding for fields with comb flag

Modified:
    
pdfbox/trunk/pdfbox/src/main/java/org/apache/pdfbox/pdmodel/interactive/form/AppearanceGeneratorHelper.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=1892312&r1=1892311&r2=1892312&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
 Fri Aug 13 17:35:08 2021
@@ -686,11 +686,8 @@ class AppearanceGeneratorHelper
     private void insertGeneratedCombAppearance(PDAppearanceContentStream 
contents, PDAppearanceStream appearanceStream,
             PDFont font, float fontSize) throws IOException
     {
-        
-        // TODO:    Currently the quadding is not taken into account
-        //          so the comb is always filled from left to right.
-        
         int maxLen = ((PDTextField) field).getMaxLen();
+        int quadding = ((PDTextField) field).getQ();
         int numChars = Math.min(value.length(), maxLen);
         
         PDRectangle paddingEdge = applyPadding(appearanceStream.getBBox(), 1);
@@ -704,6 +701,16 @@ class AppearanceGeneratorHelper
         
         float xOffset = combWidth / 2;
 
+        // add to initial offset if right aligned or centered
+        if (quadding == 2)
+        {
+            xOffset = xOffset + (maxLen - numChars) * combWidth;
+        }
+        else if (quadding == 1)
+        {
+            xOffset = xOffset + Math.floorDiv(maxLen - numChars, 2) * 
combWidth;
+        }
+
         for (int i = 0; i < numChars; i++) 
         {
             String combString = value.substring(i, i+1);


Reply via email to