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 2021/08/13 17:40:02 UTC
svn commit: r1892313 -
/pdfbox/branches/2.0/pdfbox/src/main/java/org/apache/pdfbox/pdmodel/interactive/form/AppearanceGeneratorHelper.java
Author: msahyoun
Date: Fri Aug 13 17:40:01 2021
New Revision: 1892313
URL: http://svn.apache.org/viewvc?rev=1892313&view=rev
Log:
PDFBOX-5256: support quadding for fields with comb flag
Modified:
pdfbox/branches/2.0/pdfbox/src/main/java/org/apache/pdfbox/pdmodel/interactive/form/AppearanceGeneratorHelper.java
Modified: pdfbox/branches/2.0/pdfbox/src/main/java/org/apache/pdfbox/pdmodel/interactive/form/AppearanceGeneratorHelper.java
URL: http://svn.apache.org/viewvc/pdfbox/branches/2.0/pdfbox/src/main/java/org/apache/pdfbox/pdmodel/interactive/form/AppearanceGeneratorHelper.java?rev=1892313&r1=1892312&r2=1892313&view=diff
==============================================================================
--- pdfbox/branches/2.0/pdfbox/src/main/java/org/apache/pdfbox/pdmodel/interactive/form/AppearanceGeneratorHelper.java (original)
+++ pdfbox/branches/2.0/pdfbox/src/main/java/org/apache/pdfbox/pdmodel/interactive/form/AppearanceGeneratorHelper.java Fri Aug 13 17:40:01 2021
@@ -625,11 +625,8 @@ class AppearanceGeneratorHelper {
*/
private void insertGeneratedCombAppearance(PDPageContentStream 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);
@@ -643,7 +640,18 @@ class AppearanceGeneratorHelper {
float xOffset = combWidth / 2;
- for (int i = 0; i < numChars; i++) {
+ // 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);
float currCharWidth = font.getStringWidth(combString) / FONTSCALE * fontSize / 2;