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/15 01:29:16 UTC
svn commit: r1679476 - in
/pdfbox/trunk/pdfbox/src/main/java/org/apache/pdfbox/pdmodel/interactive/form:
PDButton.java PDField.java PDRadioButton.java PDTextField.java
PDVariableText.java
Author: jahewson
Date: Thu May 14 23:29:15 2015
New Revision: 1679476
URL: http://svn.apache.org/r1679476
Log:
PDFBOX-2459: Set and removing inherited attributes isn't meaningful
Modified:
pdfbox/trunk/pdfbox/src/main/java/org/apache/pdfbox/pdmodel/interactive/form/PDButton.java
pdfbox/trunk/pdfbox/src/main/java/org/apache/pdfbox/pdmodel/interactive/form/PDField.java
pdfbox/trunk/pdfbox/src/main/java/org/apache/pdfbox/pdmodel/interactive/form/PDRadioButton.java
pdfbox/trunk/pdfbox/src/main/java/org/apache/pdfbox/pdmodel/interactive/form/PDTextField.java
pdfbox/trunk/pdfbox/src/main/java/org/apache/pdfbox/pdmodel/interactive/form/PDVariableText.java
Modified: pdfbox/trunk/pdfbox/src/main/java/org/apache/pdfbox/pdmodel/interactive/form/PDButton.java
URL: http://svn.apache.org/viewvc/pdfbox/trunk/pdfbox/src/main/java/org/apache/pdfbox/pdmodel/interactive/form/PDButton.java?rev=1679476&r1=1679475&r2=1679476&view=diff
==============================================================================
--- pdfbox/trunk/pdfbox/src/main/java/org/apache/pdfbox/pdmodel/interactive/form/PDButton.java (original)
+++ pdfbox/trunk/pdfbox/src/main/java/org/apache/pdfbox/pdmodel/interactive/form/PDButton.java Thu May 14 23:29:15 2015
@@ -188,14 +188,7 @@ public abstract class PDButton extends P
*/
public void setOptions(List<String> values)
{
- if (values == null || values.isEmpty())
- {
- removeInheritableAttribute(COSName.OPT);
- }
- else
- {
- setInheritableAttribute(COSName.OPT, COSArrayList.convertStringListToCOSStringCOSArray(values));
- }
+ dictionary.setItem(COSName.OPT, COSArrayList.convertStringListToCOSStringCOSArray(values));
}
@Override
Modified: pdfbox/trunk/pdfbox/src/main/java/org/apache/pdfbox/pdmodel/interactive/form/PDField.java
URL: http://svn.apache.org/viewvc/pdfbox/trunk/pdfbox/src/main/java/org/apache/pdfbox/pdmodel/interactive/form/PDField.java?rev=1679476&r1=1679475&r2=1679476&view=diff
==============================================================================
--- pdfbox/trunk/pdfbox/src/main/java/org/apache/pdfbox/pdmodel/interactive/form/PDField.java (original)
+++ pdfbox/trunk/pdfbox/src/main/java/org/apache/pdfbox/pdmodel/interactive/form/PDField.java Thu May 14 23:29:15 2015
@@ -79,29 +79,6 @@ public abstract class PDField implements
this.dictionary = field;
this.parent = parent;
}
-
- /**
- * Returns the node in the field tree from which a specific attribute might be inherited.
- *
- * @param field the field from which to look for the attribute
- * @param key the key to look for
- * @return PDFieldTreeNode the node from which the attribute will be inherited or null
- */
- public PDField getInheritableAttributesNode(PDField field, COSName key)
- {
- if (field.dictionary.containsKey(key))
- {
- return field;
- }
- else
- {
- if (field.parent != null)
- {
- getInheritableAttributesNode(field.parent, key);
- }
- }
- return null;
- }
/**
* Returns the given attribute, inheriting from parent nodes if necessary.
@@ -111,56 +88,19 @@ public abstract class PDField implements
*/
protected COSBase getInheritableAttribute(COSName key)
{
- PDField attributesNode = getInheritableAttributesNode(this, key);
- if (attributesNode != null)
+ if (dictionary.containsKey(key))
{
- return attributesNode.dictionary.getDictionaryObject(key);
+ return dictionary.getDictionaryObject(key);
}
- else
+ else if (parent != null)
{
- return acroForm.getCOSObject().getDictionaryObject(key);
+ return parent.getInheritableAttribute(key);
}
- }
-
- /**
- * Sets the given attribute, inheriting from parent nodes if necessary.
- *
- * @param key the key to look up
- * @param value the new attributes value
- */
- protected void setInheritableAttribute(COSName key, COSBase value)
- {
- if (value == null)
- {
- removeInheritableAttribute(key);
- }
- else
- {
- PDField attributesNode = getInheritableAttributesNode(this, key);
- if (attributesNode != null)
- {
- attributesNode.dictionary.setItem(key, value);
- }
- else
- {
- dictionary.setItem(key, value);
- }
- }
- }
-
- /**
- * Removes the given attribute, inheriting from parent nodes if necessary.
- *
- * @param key the key to look up
- */
- protected void removeInheritableAttribute(COSName key)
- {
- PDField attributesNode = getInheritableAttributesNode(this, key);
- if (attributesNode != null)
+ else
{
- attributesNode.dictionary.removeItem(key);
+ return acroForm.getCOSObject().getDictionaryObject(key);
}
- }
+ }
/**
* Get a text as text stream.
Modified: pdfbox/trunk/pdfbox/src/main/java/org/apache/pdfbox/pdmodel/interactive/form/PDRadioButton.java
URL: http://svn.apache.org/viewvc/pdfbox/trunk/pdfbox/src/main/java/org/apache/pdfbox/pdmodel/interactive/form/PDRadioButton.java?rev=1679476&r1=1679475&r2=1679476&view=diff
==============================================================================
--- pdfbox/trunk/pdfbox/src/main/java/org/apache/pdfbox/pdmodel/interactive/form/PDRadioButton.java (original)
+++ pdfbox/trunk/pdfbox/src/main/java/org/apache/pdfbox/pdmodel/interactive/form/PDRadioButton.java Thu May 14 23:29:15 2015
@@ -152,30 +152,23 @@ public final class PDRadioButton extends
@Override
public void setValue(String fieldValue)
{
- if (fieldValue == null)
+ COSName nameForValue = COSName.getPDFName(fieldValue);
+ dictionary.setItem(COSName.V, nameForValue);
+ List<COSObjectable> kids = getKids();
+ for (COSObjectable kid : kids)
{
- removeInheritableAttribute(COSName.V);
- }
- else
- {
- COSName nameForValue = COSName.getPDFName(fieldValue);
- setInheritableAttribute(COSName.V, nameForValue);
- List<COSObjectable> kids = getKids();
- for (COSObjectable kid : kids)
+ if (kid instanceof PDAnnotationWidget)
{
- if (kid instanceof PDAnnotationWidget)
+ PDAppearanceEntry appearanceEntry = ((PDAnnotationWidget) kid).getAppearance()
+ .getNormalAppearance();
+
+ if (((COSDictionary) appearanceEntry.getCOSObject()).containsKey(nameForValue))
+ {
+ ((COSDictionary) kid.getCOSObject()).setName(COSName.AS, fieldValue);
+ }
+ else
{
- PDAppearanceEntry appearanceEntry = ((PDAnnotationWidget) kid).getAppearance()
- .getNormalAppearance();
-
- if (((COSDictionary) appearanceEntry.getCOSObject()).containsKey(nameForValue))
- {
- ((COSDictionary) kid.getCOSObject()).setName(COSName.AS, fieldValue);
- }
- else
- {
- ((COSDictionary) kid.getCOSObject()).setItem(COSName.AS, COSName.OFF);
- }
+ ((COSDictionary) kid.getCOSObject()).setItem(COSName.AS, COSName.OFF);
}
}
}
Modified: pdfbox/trunk/pdfbox/src/main/java/org/apache/pdfbox/pdmodel/interactive/form/PDTextField.java
URL: http://svn.apache.org/viewvc/pdfbox/trunk/pdfbox/src/main/java/org/apache/pdfbox/pdmodel/interactive/form/PDTextField.java?rev=1679476&r1=1679475&r2=1679476&view=diff
==============================================================================
--- pdfbox/trunk/pdfbox/src/main/java/org/apache/pdfbox/pdmodel/interactive/form/PDTextField.java (original)
+++ pdfbox/trunk/pdfbox/src/main/java/org/apache/pdfbox/pdmodel/interactive/form/PDTextField.java Thu May 14 23:29:15 2015
@@ -210,15 +210,8 @@ public final class PDTextField extends P
@Override
public void setDefaultValue(String value)
{
- if (value != null)
- {
- COSString fieldValue = new COSString(value);
- setInheritableAttribute(COSName.DV, fieldValue);
- }
- else
- {
- removeInheritableAttribute(COSName.DV);
- }
+ COSString fieldValue = new COSString(value);
+ dictionary.setItem(COSName.DV, fieldValue);
}
@Override
@@ -235,15 +228,7 @@ public final class PDTextField extends P
@Override
public void setValue(String value) throws IOException
{
- if (value != null && !value.isEmpty())
- {
- COSString fieldValue = new COSString(value);
- setInheritableAttribute(COSName.V, fieldValue);
- }
- else
- {
- removeInheritableAttribute(COSName.V);
- }
+ dictionary.setItem(COSName.V, new COSString(value));
applyChange();
}
Modified: pdfbox/trunk/pdfbox/src/main/java/org/apache/pdfbox/pdmodel/interactive/form/PDVariableText.java
URL: http://svn.apache.org/viewvc/pdfbox/trunk/pdfbox/src/main/java/org/apache/pdfbox/pdmodel/interactive/form/PDVariableText.java?rev=1679476&r1=1679475&r2=1679476&view=diff
==============================================================================
--- pdfbox/trunk/pdfbox/src/main/java/org/apache/pdfbox/pdmodel/interactive/form/PDVariableText.java (original)
+++ pdfbox/trunk/pdfbox/src/main/java/org/apache/pdfbox/pdmodel/interactive/form/PDVariableText.java Thu May 14 23:29:15 2015
@@ -85,14 +85,7 @@ public abstract class PDVariableText ext
*/
public void setDefaultAppearance(String daValue)
{
- if (daValue != null)
- {
- setInheritableAttribute(COSName.DA, new COSString(daValue));
- }
- else
- {
- removeInheritableAttribute(COSName.DA);
- }
+ dictionary.setItem(COSName.DA, new COSString(daValue));
}
/**