[ 
https://issues.apache.org/jira/browse/PDFBOX-3391?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=15347960#comment-15347960
 ] 

Scott Coldwell commented on PDFBOX-3391:
----------------------------------------

A related problem I've found: In the attached PDF the same radio buttons are on 
pages 1 and 3.  What I've found is that the Opt values are duplicated and there 
is a separate index value (0 and 1) for each page the radio button resides.  
The problem with this, if I set the value to "0" it selects a radio button on 
page 1, if I set the value to 1 it selects a radio button on page 3.  Unless 
I'm misunderstanding something a form field should be able to have multiple 
widgets on separate pages and setting a value on that field should update it 
across all pages.  All the text fields in the attached PDF function that way.

> PDButton.getOnValues seems to be using the wrong source for getting the 
> allowed values
> --------------------------------------------------------------------------------------
>
>                 Key: PDFBOX-3391
>                 URL: https://issues.apache.org/jira/browse/PDFBOX-3391
>             Project: PDFBox
>          Issue Type: Improvement
>          Components: AcroForm
>    Affects Versions: 2.0.1
>            Reporter: Scott Coldwell
>            Assignee: Maruan Sahyoun
>             Fix For: 2.0.3, 2.1.0
>
>         Attachments: SF2817.pdf
>
>
> We are in the process of migrating from itext to pdfbox and noticed that an 
> exception was being thrown when trying to set a radio button with 
> PDField.setValue().  The values returned from PDButton.getOnValues() which is 
> used by PDButton.checkValue() called from PDButton.setValue() are only 
> returning 0,1 instead of what we had been using with itext.  After 
> investigating itext's source code and playing around with pdfbox I was able 
> to get to what I believe are the appropriate allowed values by using the 
> following code.
> {code}
>         if (field instanceof PDButton)
>         {
>             final COSBase item = field.getCOSObject().getItem(COSName.OPT);
>             if (item != null && item instanceof COSArray)
>             {
>                 final COSArray optArray = (COSArray)item;
>                 for (int i = 0 ; i < optArray.size() ; i++)
>                 {
>                     // Each item in this array is an allowed value
>                     // optArray.getString(i);
>                 }
>             }
>         }
> {code}



--
This message was sent by Atlassian JIRA
(v6.3.4#6332)

---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]

Reply via email to