Am 07.04.2016 um 17:06 schrieb Strein, Mark C CIV USARMY TRADOC ANALYSIS
CTR (US):
Hello all,
I hacked my way around it. Used my old software to save the pdf with security
removed.
Then did the explorer save to adobe trick.
That means you bypassed the problem instead of confronting and solving it.
Re your code change suggestion - I can't comment it, I suggest you post
a diff patch in JIRA. Don't forget to mention what version this is for.
Tilman
I would like to make a suggested code change in the PDChoiceField class if I
may(see TODO):
public void setValue(String optionValue) throws IOException
{
//TODO - in the instance where an option list doesn't have a default
option
//We need to allow for the case where no selection was made.
//When reading a blank form, the value returned to us is null. The
current code
//does not handle the possibility of a choice field not being set.
if(optionValue==null||optionValue.equalsIgnoreCase(""))
{
super.setValue("");
return;
}
int indexSelected = -1;
COSArray options = (COSArray)
getDictionary().getDictionaryObject(COSName.OPT);
int fieldFlags = getFieldFlags();
boolean isEditable = (FLAG_COMBO & fieldFlags) != 0 && (FLAG_EDIT &
fieldFlags) != 0;
if (options.size() == 0 && !isEditable)
{
throw new IOException("Error: You cannot set a value for a choice field
if there are no options.");
}
else
{
// YXJ: Changed the order of the loops. Acrobat produces PDF's
// where sometimes there is 1 string and the rest arrays.
// This code works either way.
for (int i = 0; i < options.size() && indexSelected == -1; i++)
{
COSBase option = options.getObject(i);
if (option instanceof COSArray)
{
COSArray keyValuePair = (COSArray) option;
COSString key = (COSString) keyValuePair.getObject(0);
COSString value = (COSString) keyValuePair.getObject(1);
if (optionValue.equals(key.getString()) ||
optionValue.equals(value.getString()))
{
// have the parent draw the appearance stream with the
value
if ((FLAG_COMBO & fieldFlags) != 0)
{
super.setValue(value.getString());
}
else
{
COSArray indexEntries = new COSArray();
indexEntries.add(COSInteger.get((long) i));
getDictionary().setItem(COSName.I, indexEntries);
setListboxValue(value.getString());
}
// but then use the key as the V entry
getDictionary().setItem(COSName.V, key);
indexSelected = i;
}
}
else
{
COSString value = (COSString) option;
if (optionValue.equals(value.getString()))
{
super.setValue(optionValue);
indexSelected = i;
}
}
}
}
if (indexSelected == -1 && isEditable)
{
super.setValue(optionValue);
}
else if (indexSelected == -1)
{
throw new IOException("Error: '" + optionValue + "' was not an
available option.");
}
else
{
COSArray indexArray = (COSArray)
getDictionary().getDictionaryObject(COSName.I);
if (indexArray != null)
{
indexArray.clear();
indexArray.add(COSInteger.get(indexSelected));
}
}
}
V/R,
Mark Strein
TRAC-FLVN
Wargaming and Simulations Directorate
Analytic Tools Division - Paving Crew
Keeper of the Codes
913-684-9309
---------------------------------------------------------------------
To unsubscribe, e-mail: users-unsubscr...@pdfbox.apache.org
For additional commands, e-mail: users-h...@pdfbox.apache.org
---------------------------------------------------------------------
To unsubscribe, e-mail: users-unsubscr...@pdfbox.apache.org
For additional commands, e-mail: users-h...@pdfbox.apache.org