renaming a field and not able to set value to the saved PDF document ...
------------------------------------------------------------------------

                 Key: PDFBOX-481
                 URL: https://issues.apache.org/jira/browse/PDFBOX-481
             Project: PDFBox
          Issue Type: Bug
          Components: PDModel.AcroForm
    Affects Versions: 0.7.3
         Environment: Windows XP Professional SP3, jre1.6.0_07/jdk1.6.0_11 , 
PDFBox-0.7.3.jar
            Reporter: Venkatesh Prasad.B.K.
             Fix For: 0.7.3


I will explain what I want to do.

1. I have a PDF Document with Fields and let us call this 
'Source_Original.PDF'. The field names in this PDF document have to be renamed 
and stored as 'Source_Target.PDF'. I then have to set/change the values of 
form-fields in 'Source_Target.PDF'.

The issue I am facing is given below:

1. I renamed the form fields in 'Source_Original.PDF" using the code given in 
my earlier mail (below) and saved it as 'Source_Target.PDF'.
2. I checked the form fields in 'Source_Target.PDF" and form-fields were 
renamed correctly.
3. However when I tried to set/change values of form-fields in 
'Source_Target.PDF' using PDFBox code, I was not able to do so.

I used iText to set/change values of form-fields in 'Source_Target.PDF' and was 
successful. But we want to use only PDFBox.

To summarize - We are not able to set/change values of form fields of a PDF 
Document whose form-fields have been renamed. There is no issue if the 
form-fields are renamed manually using Adobe Acrobat 9. The issue is only
when the form-fields are renamed using PDFBox option - 
setPartialName(newFieldName);

> Only to be sure, changing values in 'Source_Original.PDF'  works with the 
> same code you use to 
> manipulate 'Source_Target.PDF'??

Yes

I have attached the 2 files - "Source_Original.PDF' and 'Source_Target.PDF',

----- Code
                                try
                                {
                                        PDDocument pdfDocument = 
PDDocument.load(pdfSource);
                                        try
                                        {
                                                if (pdfDocument.isEncrypted())
                                                {
                                                        pdfDocument.decrypt("");
                                                }
                                                PDDocumentCatalog docCatalog = 
pdfDocument.getDocumentCatalog();
                                                PDAcroForm acroForm = 
docCatalog.getAcroForm();
                                                if (acroForm != null)
                                                {
                                                        List pdfFields = 
acroForm.getFields();
                                                        if (pdfFields != null)
                                                        {
                                                                PDField 
pdfField;
                                                                for (int i = 0; 
i < pdfFields.size(); i++)
                                                                {
                                                                        
pdfField = (PDField) pdfFields.get(i);
                                                                        String 
fieldName = pdfField.getPartialName();
                                                                        if( 
pdfFieldNames.containsKey(fieldName) ){
                                                                                
String newFieldName = (String) pdfFieldNames.get(fieldName);
                                                                                
pdfField.setPartialName(newFieldName);
                                                                        }
                                                                }
                                                                
pdfDocument.save(pdfOutput);
                                                        } else {
                                                                return "No Acro 
Form Fields found in PDF Document " + pdfSource + "!";
                                                        }
                                                } else {
                                                        return "PDF document " 
+ pdfSource + " not able to access!";
                                                }
                                        } catch (Exception e) {
                                                return "PDF Document " + 
pdfSource + " is encrypted! Cannot process.";
                                        }
                                        pdfDocument.close();
                                } catch (Exception e) {
                                        return "PDF Document " + pdfSource + " 
cannot be found!";
                                }


-- 
This message is automatically generated by JIRA.
-
You can reply to this email to add a comment to the issue online.

Reply via email to