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);