svn commit: r1691972 - /pdfbox/trunk/pdfbox/src/main/java/org/apache/pdfbox/pdmodel/interactive/form/AppearanceGeneratorHelper.java
Author: msahyoun Date: Mon Jul 20 16:17:53 2015 New Revision: 1691972 URL: http://svn.apache.org/r1691972 Log: PDFBOX-2877: adjust vertical text alignment 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=1691972r1=1691971r2=1691972view=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 Mon Jul 20 16:17:53 2015 @@ -231,21 +231,32 @@ class AppearanceGeneratorHelper // calculate the y-position of the baseline float y; -// calculate the Y fontScale at fontSize -float fontScaleY = font.getFontMatrix().getScaleY() * fontSize; - +// calculate font metrics at font size +float fontScaleY = fontSize / 1000f; +float fontBoundingBoxAtSize = font.getBoundingBox().getHeight() * fontScaleY; +float fontCapAtSize = font.getFontDescriptor().getCapHeight() * fontScaleY; +float fontDescentAtSize = font.getFontDescriptor().getDescent() * fontScaleY; if (field instanceof PDTextField ((PDTextField) field).isMultiline()) { -float height = font.getBoundingBox().getHeight() * fontScaleY; -y = contentRect.getUpperRightY() - height; +y = contentRect.getUpperRightY() - fontBoundingBoxAtSize; } else { -float capHeigth = font.getFontDescriptor().getCapHeight() * fontScaleY; -y = Math.max((bbox.getHeight() - capHeigth) / 2f, 0); -} +// calculate the position based on the content rectangle +y = clipRect.getLowerLeftY() + (clipRect.getHeight() - fontCapAtSize) / 2; + +// check to ensure that ascents and descents fit +if (y - clipRect.getLowerLeftY() -fontDescentAtSize) { +float fontDescentBased = -fontDescentAtSize + contentRect.getLowerLeftY(); +float fontCapBased = contentRect.getHeight() - contentRect.getLowerLeftY() - fontCapAtSize; + +y = Math.min(fontDescentBased, Math.max(y, fontCapBased)); +} + +} + // show the text float x = contentRect.getLowerLeftX();
svn commit: r1691971 - /pdfbox/trunk/pdfbox/src/main/java/org/apache/pdfbox/io/MemoryUsageSetting.java
Author: tilman Date: Mon Jul 20 16:11:23 2015 New Revision: 1691971 URL: http://svn.apache.org/r1691971 Log: PDFBOX-2852: make class final that has only private constructors Modified: pdfbox/trunk/pdfbox/src/main/java/org/apache/pdfbox/io/MemoryUsageSetting.java Modified: pdfbox/trunk/pdfbox/src/main/java/org/apache/pdfbox/io/MemoryUsageSetting.java URL: http://svn.apache.org/viewvc/pdfbox/trunk/pdfbox/src/main/java/org/apache/pdfbox/io/MemoryUsageSetting.java?rev=1691971r1=1691970r2=1691971view=diff == --- pdfbox/trunk/pdfbox/src/main/java/org/apache/pdfbox/io/MemoryUsageSetting.java (original) +++ pdfbox/trunk/pdfbox/src/main/java/org/apache/pdfbox/io/MemoryUsageSetting.java Mon Jul 20 16:11:23 2015 @@ -22,7 +22,7 @@ import java.io.File; * Controls how memory/temporary files are used for * buffering streams etc. */ -public class MemoryUsageSetting +public final class MemoryUsageSetting { private final boolean useMainMemory; private final boolean useTempFile;
svn commit: r1692027 - in /pdfbox/trunk: examples/src/main/java/org/apache/pdfbox/examples/util/ pdfbox/src/main/java/org/apache/pdfbox/contentstream/ pdfbox/src/main/java/org/apache/pdfbox/io/ pdfbox
Author: jahewson Date: Mon Jul 20 21:47:41 2015 New Revision: 1692027 URL: http://svn.apache.org/r1692027 Log: PDFBOX-2894: Remove COSStreamArray / SequenceRandomAccessRead Removed: pdfbox/trunk/pdfbox/src/main/java/org/apache/pdfbox/io/SequenceRandomAccessRead.java pdfbox/trunk/pdfbox/src/main/java/org/apache/pdfbox/pdmodel/common/COSStreamArray.java Modified: pdfbox/trunk/examples/src/main/java/org/apache/pdfbox/examples/util/RemoveAllText.java pdfbox/trunk/pdfbox/src/main/java/org/apache/pdfbox/contentstream/PDContentStream.java pdfbox/trunk/pdfbox/src/main/java/org/apache/pdfbox/contentstream/PDFStreamEngine.java pdfbox/trunk/pdfbox/src/main/java/org/apache/pdfbox/multipdf/LayerUtility.java pdfbox/trunk/pdfbox/src/main/java/org/apache/pdfbox/multipdf/PDFCloneUtility.java pdfbox/trunk/pdfbox/src/main/java/org/apache/pdfbox/pdfparser/PDFStreamParser.java pdfbox/trunk/pdfbox/src/main/java/org/apache/pdfbox/pdmodel/PDDocument.java pdfbox/trunk/pdfbox/src/main/java/org/apache/pdfbox/pdmodel/PDPage.java pdfbox/trunk/pdfbox/src/main/java/org/apache/pdfbox/pdmodel/PDPageContentStream.java pdfbox/trunk/pdfbox/src/main/java/org/apache/pdfbox/pdmodel/common/PDStream.java pdfbox/trunk/pdfbox/src/main/java/org/apache/pdfbox/pdmodel/font/PDType3CharProc.java pdfbox/trunk/pdfbox/src/main/java/org/apache/pdfbox/pdmodel/graphics/form/PDFormXObject.java pdfbox/trunk/pdfbox/src/main/java/org/apache/pdfbox/pdmodel/graphics/pattern/PDTilingPattern.java pdfbox/trunk/pdfbox/src/main/java/org/apache/pdfbox/text/PDFTextStripper.java pdfbox/trunk/pdfbox/src/main/java/org/apache/pdfbox/text/PDFTextStripperByArea.java pdfbox/trunk/pdfbox/src/test/java/org/apache/pdfbox/encryption/TestSymmetricKeyEncryption.java pdfbox/trunk/pdfbox/src/test/java/org/apache/pdfbox/io/TestRandomAccessBuffer.java pdfbox/trunk/pdfbox/src/test/java/org/apache/pdfbox/pdmodel/TestPDPageContentStream.java pdfbox/trunk/preflight/src/main/java/org/apache/pdfbox/preflight/content/PreflightContentStream.java pdfbox/trunk/preflight/src/main/java/org/apache/pdfbox/preflight/graphic/ICCProfileWrapper.java pdfbox/trunk/preflight/src/main/java/org/apache/pdfbox/preflight/process/CatalogValidationProcess.java pdfbox/trunk/preflight/src/main/java/org/apache/pdfbox/preflight/process/MetadataValidationProcess.java Modified: pdfbox/trunk/examples/src/main/java/org/apache/pdfbox/examples/util/RemoveAllText.java URL: http://svn.apache.org/viewvc/pdfbox/trunk/examples/src/main/java/org/apache/pdfbox/examples/util/RemoveAllText.java?rev=1692027r1=1692026r2=1692027view=diff == --- pdfbox/trunk/examples/src/main/java/org/apache/pdfbox/examples/util/RemoveAllText.java (original) +++ pdfbox/trunk/examples/src/main/java/org/apache/pdfbox/examples/util/RemoveAllText.java Mon Jul 20 21:47:41 2015 @@ -70,7 +70,7 @@ public class RemoveAllText } for( PDPage page : document.getPages() ) { -PDFStreamParser parser = new PDFStreamParser(page.getStream()); +PDFStreamParser parser = new PDFStreamParser(page); parser.parse(); ListObject tokens = parser.getTokens(); ListObject newTokens = new ArrayListObject(); Modified: pdfbox/trunk/pdfbox/src/main/java/org/apache/pdfbox/contentstream/PDContentStream.java URL: http://svn.apache.org/viewvc/pdfbox/trunk/pdfbox/src/main/java/org/apache/pdfbox/contentstream/PDContentStream.java?rev=1692027r1=1692026r2=1692027view=diff == --- pdfbox/trunk/pdfbox/src/main/java/org/apache/pdfbox/contentstream/PDContentStream.java (original) +++ pdfbox/trunk/pdfbox/src/main/java/org/apache/pdfbox/contentstream/PDContentStream.java Mon Jul 20 21:47:41 2015 @@ -17,7 +17,8 @@ package org.apache.pdfbox.contentstream; -import org.apache.pdfbox.cos.COSStream; +import java.io.IOException; +import java.io.InputStream; import org.apache.pdfbox.pdmodel.PDResources; import org.apache.pdfbox.pdmodel.common.PDRectangle; import org.apache.pdfbox.util.Matrix; @@ -30,9 +31,12 @@ import org.apache.pdfbox.util.Matrix; public interface PDContentStream { /** - * Returns the underlying COS stream. + * Returns this stream's content, if any. + * + * @return An InputStream or null. + * @throws IOException If the stream could not be read */ -COSStream getContentStream(); +InputStream getContents() throws IOException; /** * Returns this stream's resources, if any. Modified: pdfbox/trunk/pdfbox/src/main/java/org/apache/pdfbox/contentstream/PDFStreamEngine.java URL:
svn commit: r1692002 - /pdfbox/trunk/pdfbox/src/main/java/org/apache/pdfbox/pdmodel/interactive/form/AppearanceGeneratorHelper.java
Author: msahyoun Date: Mon Jul 20 19:16:30 2015 New Revision: 1692002 URL: http://svn.apache.org/r1692002 Log: PDFBOX-2877: special handling if the font caps are taller than the fields clipping area 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=1692002r1=1692001r2=1692002view=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 Mon Jul 20 19:16:30 2015 @@ -243,16 +243,24 @@ class AppearanceGeneratorHelper } else { -// calculate the position based on the content rectangle -y = clipRect.getLowerLeftY() + (clipRect.getHeight() - fontCapAtSize) / 2; - -// check to ensure that ascents and descents fit -if (y - clipRect.getLowerLeftY() -fontDescentAtSize) { - -float fontDescentBased = -fontDescentAtSize + contentRect.getLowerLeftY(); -float fontCapBased = contentRect.getHeight() - contentRect.getLowerLeftY() - fontCapAtSize; - -y = Math.min(fontDescentBased, Math.max(y, fontCapBased)); +// Adobe shows the text 'shiftet up' in case the caps don't fit into the clipping area +if (fontCapAtSize clipRect.getHeight()) +{ +y = clipRect.getLowerLeftY() + -fontDescentAtSize; +} +else +{ +// calculate the position based on the content rectangle +y = clipRect.getLowerLeftY() + (clipRect.getHeight() - fontCapAtSize) / 2; + +// check to ensure that ascents and descents fit +if (y - clipRect.getLowerLeftY() -fontDescentAtSize) { + +float fontDescentBased = -fontDescentAtSize + contentRect.getLowerLeftY(); +float fontCapBased = contentRect.getHeight() - contentRect.getLowerLeftY() - fontCapAtSize; + +y = Math.min(fontDescentBased, Math.max(y, fontCapBased)); +} } }
svn commit: r1692004 - in /pdfbox/branches/1.8: ant/pom.xml examples/pom.xml fontbox/pom.xml jempbox/pom.xml lucene/pom.xml parent/pom.xml pdfbox/pom.xml preflight-app/pom.xml preflight/pom.xml xmpbox
Author: lehmi Date: Mon Jul 20 19:20:42 2015 New Revision: 1692004 URL: http://svn.apache.org/r1692004 Log: PDFBOX-2891: move the animal sniffer configuration to the parent pom Modified: pdfbox/branches/1.8/ant/pom.xml pdfbox/branches/1.8/examples/pom.xml pdfbox/branches/1.8/fontbox/pom.xml pdfbox/branches/1.8/jempbox/pom.xml pdfbox/branches/1.8/lucene/pom.xml pdfbox/branches/1.8/parent/pom.xml pdfbox/branches/1.8/pdfbox/pom.xml pdfbox/branches/1.8/preflight-app/pom.xml pdfbox/branches/1.8/preflight/pom.xml pdfbox/branches/1.8/xmpbox/pom.xml Modified: pdfbox/branches/1.8/ant/pom.xml URL: http://svn.apache.org/viewvc/pdfbox/branches/1.8/ant/pom.xml?rev=1692004r1=1692003r2=1692004view=diff == --- pdfbox/branches/1.8/ant/pom.xml (original) +++ pdfbox/branches/1.8/ant/pom.xml Mon Jul 20 19:20:42 2015 @@ -43,29 +43,4 @@ /dependency /dependencies - build -plugins - plugin - groupIdorg.codehaus.mojo/groupId - artifactIdanimal-sniffer-maven-plugin/artifactId - configuration - signature - groupIdorg.codehaus.mojo.signature/groupId - artifactIdjava15/artifactId - version1.0/version - /signature - /configuration - executions - execution -idcheck-java-compatibility/id -phasetest/phase -goals - goalcheck/goal -/goals - /execution -/executions - /plugin -/plugins - /build - /project Modified: pdfbox/branches/1.8/examples/pom.xml URL: http://svn.apache.org/viewvc/pdfbox/branches/1.8/examples/pom.xml?rev=1692004r1=1692003r2=1692004view=diff == --- pdfbox/branches/1.8/examples/pom.xml (original) +++ pdfbox/branches/1.8/examples/pom.xml Mon Jul 20 19:20:42 2015 @@ -74,28 +74,6 @@ filteringtrue/filtering /resource /resources -plugins - plugin - groupIdorg.codehaus.mojo/groupId - artifactIdanimal-sniffer-maven-plugin/artifactId - configuration - signature - groupIdorg.codehaus.mojo.signature/groupId - artifactIdjava15/artifactId - version1.0/version - /signature - /configuration - executions - execution -idcheck-java-compatibility/id -phasetest/phase -goals - goalcheck/goal -/goals - /execution -/executions - /plugin -/plugins /build /project Modified: pdfbox/branches/1.8/fontbox/pom.xml URL: http://svn.apache.org/viewvc/pdfbox/branches/1.8/fontbox/pom.xml?rev=1692004r1=1692003r2=1692004view=diff == --- pdfbox/branches/1.8/fontbox/pom.xml (original) +++ pdfbox/branches/1.8/fontbox/pom.xml Mon Jul 20 19:20:42 2015 @@ -58,26 +58,6 @@ artifactIdmaven-bundle-plugin/artifactId extensionstrue/extensions /plugin - plugin - groupIdorg.codehaus.mojo/groupId - artifactIdanimal-sniffer-maven-plugin/artifactId - configuration -signature - groupIdorg.codehaus.mojo.signature/groupId - artifactIdjava15/artifactId - version1.0/version -/signature - /configuration - executions -execution - idcheck-java-compatibility/id - phasetest/phase - goals - goalcheck/goal - /goals - /execution - /executions - /plugin /plugins /build Modified: pdfbox/branches/1.8/jempbox/pom.xml URL: http://svn.apache.org/viewvc/pdfbox/branches/1.8/jempbox/pom.xml?rev=1692004r1=1692003r2=1692004view=diff == --- pdfbox/branches/1.8/jempbox/pom.xml (original) +++ pdfbox/branches/1.8/jempbox/pom.xml Mon Jul 20 19:20:42 2015 @@ -51,26 +51,6 @@ artifactIdmaven-bundle-plugin/artifactId extensionstrue/extensions /plugin - plugin - groupIdorg.codehaus.mojo/groupId - artifactIdanimal-sniffer-maven-plugin/artifactId - configuration -signature - groupIdorg.codehaus.mojo.signature/groupId - artifactIdjava15/artifactId - version1.0/version -/signature - /configuration - executions -execution - idcheck-java-compatibility/id - phasetest/phase - goals - goalcheck/goal - /goals - /execution -
svn commit: r1692007 - in /pdfbox/trunk: examples/pom.xml fontbox/pom.xml parent/pom.xml pdfbox/pom.xml preflight/pom.xml tools/pom.xml xmpbox/pom.xml
Author: lehmi Date: Mon Jul 20 19:43:00 2015 New Revision: 1692007 URL: http://svn.apache.org/r1692007 Log: PDFBOX-2870: move animal sniffer configuration to the parent pom Modified: pdfbox/trunk/examples/pom.xml pdfbox/trunk/fontbox/pom.xml pdfbox/trunk/parent/pom.xml pdfbox/trunk/pdfbox/pom.xml pdfbox/trunk/preflight/pom.xml pdfbox/trunk/tools/pom.xml pdfbox/trunk/xmpbox/pom.xml Modified: pdfbox/trunk/examples/pom.xml URL: http://svn.apache.org/viewvc/pdfbox/trunk/examples/pom.xml?rev=1692007r1=1692006r2=1692007view=diff == --- pdfbox/trunk/examples/pom.xml (original) +++ pdfbox/trunk/examples/pom.xml Mon Jul 20 19:43:00 2015 @@ -101,27 +101,6 @@ /resources plugins plugin -groupIdorg.codehaus.mojo/groupId -artifactIdanimal-sniffer-maven-plugin/artifactId -version1.13/version -executions - execution - idcheck-java-version/id - phasetest/phase - goals -goalcheck/goal - /goals - configuration -signature - groupIdorg.codehaus.mojo.signature/groupId - artifactIdjava16/artifactId - version1.0/version -/signature - /configuration - /execution -/executions - /plugin - plugin groupIdorg.apache.rat/groupId artifactIdapache-rat-plugin/artifactId configuration Modified: pdfbox/trunk/fontbox/pom.xml URL: http://svn.apache.org/viewvc/pdfbox/trunk/fontbox/pom.xml?rev=1692007r1=1692006r2=1692007view=diff == --- pdfbox/trunk/fontbox/pom.xml (original) +++ pdfbox/trunk/fontbox/pom.xml Mon Jul 20 19:43:00 2015 @@ -56,27 +56,6 @@ extensionstrue/extensions /plugin plugin -groupIdorg.codehaus.mojo/groupId -artifactIdanimal-sniffer-maven-plugin/artifactId -version1.13/version -executions - execution - idcheck-java-version/id - phasetest/phase - goals -goalcheck/goal - /goals - configuration -signature - groupIdorg.codehaus.mojo.signature/groupId - artifactIdjava16/artifactId - version1.0/version -/signature - /configuration - /execution -/executions - /plugin - plugin groupIdorg.apache.rat/groupId artifactIdapache-rat-plugin/artifactId configuration Modified: pdfbox/trunk/parent/pom.xml URL: http://svn.apache.org/viewvc/pdfbox/trunk/parent/pom.xml?rev=1692007r1=1692006r2=1692007view=diff == --- pdfbox/trunk/parent/pom.xml (original) +++ pdfbox/trunk/parent/pom.xml Mon Jul 20 19:43:00 2015 @@ -197,6 +197,27 @@ /execution /executions /plugin + plugin + groupIdorg.codehaus.mojo/groupId + artifactIdanimal-sniffer-maven-plugin/artifactId + version1.13/version + executions + execution + idcheck-java-version/id + phasetest/phase + goals + goalcheck/goal + /goals + configuration + signature + groupIdorg.codehaus.mojo.signature/groupId + artifactIdjava16/artifactId + version1.0/version + /signature + /configuration + /execution + /executions + /plugin /plugins pluginManagement plugins Modified: pdfbox/trunk/pdfbox/pom.xml URL: http://svn.apache.org/viewvc/pdfbox/trunk/pdfbox/pom.xml?rev=1692007r1=1692006r2=1692007view=diff == --- pdfbox/trunk/pdfbox/pom.xml (original) +++ pdfbox/trunk/pdfbox/pom.xml Mon Jul 20 19:43:00 2015 @@ -122,27 +122,6 @@ /configuration /plugin plugin - groupIdorg.codehaus.mojo/groupId - artifactIdanimal-sniffer-maven-plugin/artifactId - version1.13/version - executions - execution - idcheck-java-version/id - phasetest/phase - goals - goalcheck/goal -
svn commit: r1692011 - /pdfbox/trunk/pdfbox/src/main/java/org/apache/pdfbox/pdmodel/interactive/form/AppearanceGeneratorHelper.java
Author: msahyoun Date: Mon Jul 20 19:49:06 2015 New Revision: 1692011 URL: http://svn.apache.org/r1692011 Log: PDFBOX-2877: small code cleanup 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=1692011r1=1692010r2=1692011view=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 Mon Jul 20 19:49:06 2015 @@ -58,6 +58,12 @@ class AppearanceGeneratorHelper * Regardless of other settings in an existing appearance stream Adobe will always use this value. */ private static final int[] HIGHLIGHT_COLOR = {153,193,215}; + +/** + * The scaling factor for font units to PDF units + */ +private static final int FONTSCALE = 1000; + /** * Constructs a COSAppearance from the given field. @@ -145,7 +151,7 @@ class AppearanceGeneratorHelper ContentStreamWriter writer = new ContentStreamWriter(output); ListObject tokens = tokenize(appearanceStream); -int bmcIndex = tokens.indexOf(Operator.getOperator(BMC)); +int bmcIndex = tokens.indexOf(BMC); if (bmcIndex == -1) { // append to existing stream @@ -161,7 +167,7 @@ class AppearanceGeneratorHelper // insert field contents insertGeneratedAppearance(widget, appearanceStream, output); -int emcIndex = tokens.indexOf(Operator.getOperator(EMC)); +int emcIndex = tokens.indexOf(EMC); if (emcIndex == -1) { // append EMC @@ -232,7 +238,7 @@ class AppearanceGeneratorHelper float y; // calculate font metrics at font size -float fontScaleY = fontSize / 1000f; +float fontScaleY = fontSize / FONTSCALE; float fontBoundingBoxAtSize = font.getBoundingBox().getHeight() * fontScaleY; float fontCapAtSize = font.getFontDescriptor().getCapHeight() * fontScaleY; float fontDescentAtSize = font.getFontDescriptor().getDescent() * fontScaleY; @@ -262,7 +268,6 @@ class AppearanceGeneratorHelper y = Math.min(fontDescentBased, Math.max(y, fontCapBased)); } } - } // show the text @@ -352,7 +357,7 @@ class AppearanceGeneratorHelper PDRectangle paddingEdge = applyPadding(appearanceStream.getBBox(), 1); float combWidth = appearanceStream.getBBox().getWidth() / maxLen; -float ascentAtFontSize = font.getFontDescriptor().getAscent() / 1000 * fontSize; +float ascentAtFontSize = font.getFontDescriptor().getAscent() / FONTSCALE * fontSize; float baselineOffset = paddingEdge.getLowerLeftY() + (appearanceStream.getBBox().getHeight() - ascentAtFontSize)/2; @@ -366,7 +371,7 @@ class AppearanceGeneratorHelper for (int i = 0; i numChars; i++) { combString = value.substring(i, i+1); -currCharWidth = font.getStringWidth(combString) / 1000 * fontSize/2; +currCharWidth = font.getStringWidth(combString) / FONTSCALE * fontSize/2; xOffset = xOffset + prevCharWidth/2 - currCharWidth/2; @@ -407,7 +412,7 @@ class AppearanceGeneratorHelper // display starts with the first entry in Opt. int topIndex = ((PDListBox) field).getTopIndex(); -float highlightBoxHeight = font.getBoundingBox().getHeight() * fontSize / 1000 - 2f; +float highlightBoxHeight = font.getBoundingBox().getHeight() * fontSize / FONTSCALE - 2f; // the padding area PDRectangle paddingEdge = applyPadding(appearanceStream.getBBox(), 1); @@ -436,7 +441,7 @@ class AppearanceGeneratorHelper else if (q == PDVariableText.QUADDING_CENTERED || q == PDVariableText.QUADDING_RIGHT) { float fieldWidth = appearanceStream.getBBox().getWidth(); -float stringWidth = (font.getStringWidth(value) / 1000) * fontSize; +float stringWidth = (font.getStringWidth(value) / FONTSCALE) * fontSize; float adjustAmount = fieldWidth - stringWidth - 4; if (q == PDVariableText.QUADDING_CENTERED) @@ -462,11 +467,11 @@ class AppearanceGeneratorHelper if (i == topIndex) { -yTextPos = yTextPos - font.getFontDescriptor().getAscent() / 1000 * fontSize; +
svn commit: r1692019 - /pdfbox/trunk/pdfbox/src/main/java/org/apache/pdfbox/pdmodel/interactive/form/AppearanceGeneratorHelper.java
Author: msahyoun Date: Mon Jul 20 20:14:41 2015 New Revision: 1692019 URL: http://svn.apache.org/r1692019 Log: PDFBOX-2877: code cleanup 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=1692019r1=1692018r2=1692019view=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 Mon Jul 20 20:14:41 2015 @@ -62,7 +62,12 @@ class AppearanceGeneratorHelper /** * The scaling factor for font units to PDF units */ -private static final int FONTSCALE = 1000; +private static final int FONTSCALE = 1000; + +/** + * The default font size used for multiline text + */ +private static final float DEFAULT_FONT_SIZE = 12; /** @@ -434,11 +439,8 @@ class AppearanceGeneratorHelper contents.setNonStrokingColor(0); int q = field.getQ(); -if (q == PDVariableText.QUADDING_LEFT) -{ -// do nothing because left is default -} -else if (q == PDVariableText.QUADDING_CENTERED || q == PDVariableText.QUADDING_RIGHT) + +if (q == PDVariableText.QUADDING_CENTERED || q == PDVariableText.QUADDING_RIGHT) { float fieldWidth = appearanceStream.getBBox().getWidth(); float stringWidth = (font.getStringWidth(value) / FONTSCALE) * fontSize; @@ -451,18 +453,19 @@ class AppearanceGeneratorHelper contents.newLineAtOffset(adjustAmount, 0); } -else +else if (q != PDVariableText.QUADDING_LEFT) { throw new IOException(Error: Unknown justification value: + q); } ListString options = ((PDListBox) field).getOptionsDisplayValues(); +int numOptions = options.size(); float yTextPos = contentRect.getUpperRightY(); int topIndex = ((PDListBox) field).getTopIndex(); -for (int i = topIndex; i options.size(); i++) +for (int i = topIndex; i numOptions; i++) { if (i == topIndex) @@ -478,7 +481,7 @@ class AppearanceGeneratorHelper contents.newLineAtOffset(contentRect.getLowerLeftX(), yTextPos); contents.showText(options.get(i)); -if (i - topIndex != (options.size() - 1)) +if (i - topIndex != (numOptions - 1)) { contents.endText(); } @@ -514,7 +517,7 @@ class AppearanceGeneratorHelper if (isMultiLine()) { // Acrobat defaults to 12 for multiline text with size 0 -return 12f; +return DEFAULT_FONT_SIZE; } else {