Hi,
I encountered an error when i try to export an fdf in a pdf containing PDRadioCollection. (1.8.12 version)

The first export is correct

<field name="horizon">
*<value>4</value>*
</field>

But after an fdf import, a direct pdf modification to choose another value ("8"), the next export contain :

<field name="horizon">
*<value>4</value>*
<field name="null">
<value>Off</value>
</field>
<field name="null">
<value>Off</value>
</field>
<field name="null">
<value>Off</value>
</field>
<field name="null">
<value>4</value>
</field>
<field name="null">
<value>Off</value>
</field>
<field name="null">
<value>Off</value>
</field>
<field name="null">
<value>Off</value>
</field>
<field name="null">
<value>Off</value>
</field>
<field name="null">
<value>Off</value>
</field>
<field name="null">
<value>Off</value>
</field>
</field>

when i analyse source code, the kids management check and uncheck element during import, but this state doesn't change when i directly edit pdf.


To correct this i was obliged to adapt import code to ignore kids part :


List<FDFField> fields = fdf.getCatalog().getFDF().getFields();

if (fields != null) {
    for (FDFField fdfField : fields) {
        PDField docField = form.getField(fdfField.getPartialFieldName());
        if (docField != null) {
            try {
*if (docField instanceof PDRadioCollection) {**
**                    String value = (String) fdfField.getValue();**
**                    if (value != null) {**
**docField.getDictionary().setString(COSName.V, value);**
**
** List<PDAnnotationWidget> widgets = docField.getWidgets();**
**                        int index = Integer.valueOf(value) - 1;**
**                        if (widgets.size() > index) {**
**widgets.get(index).getDictionary().setName(COSName.AS, value);**
**                        }**
**                    }**
**                } *else {
                    docField.importFDF(fdfField);
                }
            } catch (NumberFormatException e) {
errors.append("Field (").append(fdfField.getPartialFieldName()).append(",").append(e.getMessage()).append(");");
            } catch (IOException e) {
errors.append("Field (").append(fdfField.getPartialFieldName()).append(",").append(e.getMessage()).append(");");
            }
        }
    }
}

Is this a misunderstanding on my part?

Regards



Reply via email to