You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@pdfbox.apache.org by ja...@apache.org on 2015/05/19 19:37:33 UTC
svn commit: r1680355 -
/pdfbox/trunk/pdfbox/src/main/java/org/apache/pdfbox/pdmodel/interactive/form/AppearanceGeneratorHelper.java
Author: jahewson
Date: Tue May 19 17:37:32 2015
New Revision: 1680355
URL: http://svn.apache.org/r1680355
Log:
PDFBOX-2333: Use the same code for single-line and multi-line text
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=1680355&r1=1680354&r2=1680355&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 Tue May 19 17:37:32 2015
@@ -230,38 +230,27 @@ class AppearanceGeneratorHelper
}
// show the text
- float leftOffset;
- if (!isMultiLine())
- {
- // calculation of the horizontal offset from where the text will be printed
- leftOffset = calculateHorizontalOffset(contentRect, font, fontSize);
- contents.newLineAtOffset(leftOffset, y);
- contents.showText(value);
- }
- else
- {
- leftOffset = contentRect.getLowerLeftX();
- PlainText textContent = new PlainText(value);
- AppearanceStyle appearanceStyle = new AppearanceStyle();
- appearanceStyle.setFont(font);
- appearanceStyle.setFontSize(fontSize);
-
- // Adobe Acrobat uses the font's bounding box for the leading between the lines
- appearanceStyle.setLeading(font.getBoundingBox().getHeight() /
- GLYPH_TO_PDF_SCALE * fontSize);
-
- PlainTextFormatter formatter = new PlainTextFormatter
- .Builder(contents)
- .style(appearanceStyle)
- .text(textContent)
- .width(contentRect.getWidth())
- .wrapLines(true)
- .initialOffset(leftOffset, y)
- .textAlign(field.getQ())
- .build();
- formatter.format();
-
- }
+ float leftOffset = contentRect.getLowerLeftX();
+ PlainText textContent = new PlainText(value);
+ AppearanceStyle appearanceStyle = new AppearanceStyle();
+ appearanceStyle.setFont(font);
+ appearanceStyle.setFontSize(fontSize);
+
+ // Adobe Acrobat uses the font's bounding box for the leading between the lines
+ appearanceStyle.setLeading(font.getBoundingBox().getHeight() /
+ GLYPH_TO_PDF_SCALE * fontSize);
+
+ PlainTextFormatter formatter = new PlainTextFormatter
+ .Builder(contents)
+ .style(appearanceStyle)
+ .text(textContent)
+ .width(contentRect.getWidth())
+ .wrapLines(true)
+ .initialOffset(leftOffset, y)
+ .textAlign(field.getQ())
+ .build();
+ formatter.format();
+
contents.endText();
contents.restoreGraphicsState();
contents.close();
@@ -313,50 +302,6 @@ class AppearanceGeneratorHelper
return fontSize;
}
-
- /**
- * Calculate the horizontal start position for the text.
- *
- * @param contentEdge the content edge
- * @param pdFont the font to use for formatting
- * @param fontSize the font size to use for formating
- *
- * @return the horizontal start position of the text
- *
- * @throws IOException If there is an error calculating the text position.
- */
- private float calculateHorizontalOffset(PDRectangle contentEdge, PDFont pdFont, float fontSize)
- throws IOException
- {
- // Acrobat aligns left regardless of the quadding if the text is wider than the remaining
- // width
- float stringWidth = pdFont.getStringWidth(value) / GLYPH_TO_PDF_SCALE * fontSize;
- float leftOffset;
-
- int q = field.getQ();
-
- if (q == PDTextField.QUADDING_LEFT
- || stringWidth > contentEdge.getWidth())
- {
- leftOffset = contentEdge.getLowerLeftX();
- }
- else if (q == PDTextField.QUADDING_CENTERED)
- {
- leftOffset = contentEdge.getLowerLeftX() + (contentEdge.getWidth() - stringWidth) / 2;
- }
- else if (q == PDTextField.QUADDING_RIGHT)
- {
- leftOffset = contentEdge.getLowerLeftX() + contentEdge.getWidth() - stringWidth;
- }
- else
- {
- // Unknown quadding value - default to left
- leftOffset = contentEdge.getLowerLeftX();
- LOG.debug("Unknown justification value, defaulting to left: " + q);
- }
-
- return leftOffset;
- }
/**
* Resolve the bounding box.