Thank a lot for details. I tried with |widget.setAppearanceState(i ==on ?options.get(i):"Off");| and its works fine for me.
Thanks, Bharat On Thu, Feb 2, 2017 at 12:40 AM, Tilman Hausherr <[email protected]> wrote: > Please see the code in the answer to this question: > https://stackoverflow.com/questions/41631119/radiobutton- > display-problems-with-pdfbox > > To select a button, the appropriate line there is > > |widget.setAppearanceState(i ==on ?options.get(i):"Off");| > > > setValue should also work, but you'd have to delete this line > > radioButton.setExportValues(options); > > > because there's a bug related to that. > > Your code below seems to be based on an older answer of mine (it has "new > PDRadioButton" twice), which wasn't really good. > > Another strategy would be that you open your created file with > PDFDebugger, then do the same after selecting something in Adobe Reader and > saving it. > > Tilman > > > Am 01.02.2017 um 19:22 schrieb Bharat Bhatt: > >> Hi, >> >> I used PDRadioButton to create group of radio button. I am trying to >> select >> the one radio button by default but radio button is not appearing as >> selected. >> Code example as follows: >> try >> { >> PDDocument document = new PDDocument(); >> PDPage page = new PDPage(PDRectangle.A4); >> >> document.addPage(page); >> >> PDAcroForm acroForm = new PDAcroForm(document); >> acroForm.setNeedAppearances(true); >> acroForm.setXFA(null); >> document.getDocumentCatalog().setAcroForm(acroForm); >> >> PDFont font = PDType1Font.HELVETICA; >> >> PDResources res = new PDResources(); >> COSName fontName = res.add(font); >> acroForm.setDefaultResources(res); >> acroForm.setDefaultAppearance('/' + fontName.getName() + " >> 10 >> Tf 0 g"); >> >> PDPageContentStream contents = new >> PDPageContentStream(document, page); >> >> List<String> options = Arrays.asList("a", "b", "c"); >> PDRadioButton radioButton = new PDRadioButton(acroForm); >> radioButton.setPartialName("RadioButtonParent"); >> radioButton.setExportValues(options); >> radioButton.getCOSObject().setName(COSName.DV, >> options.get(1)); >> >> List<PDAnnotationWidget> widgets = new ArrayList<>(); >> for (int i = 0; i < options.size(); i++) >> { >> PDRadioButton subRadioButtons = new >> PDRadioButton(acroForm); >> subRadioButtons.setPartialName("RadioButton"); >> >> PDAppearanceCharacteristicsDictionary fieldAppearance = >> new PDAppearanceCharacteristicsDictionary(new >> COSDictionary()); >> fieldAppearance.setBorderColour(new PDColor(new float[] >> { >> 0, 0, 0 }, PDDeviceRGB.INSTANCE)); >> >> PDAnnotationWidget widget = >> subRadioButtons.getWidgets().get(0); >> widget.setRectangle(new PDRectangle(30, 811 - i * (21), >> 16, >> 16)); >> widget.setAppearanceCharacteristics(fieldAppearance); >> >> PDAppearanceDictionary appearance = >> widget.getAppearance(); >> if (appearance == null) >> { >> appearance = new PDAppearanceDictionary(); >> } >> >> COSDictionary aeDict = new COSDictionary(); >> COSStream on = new COSStream(); >> aeDict.setItem(options.get(i), on); >> >> String value = null; >> if (options != null) >> { >> value = options.get(i); >> if (!"b".equalsIgnoreCase(value)) >> { >> aeDict.setItem(COSName.Off.getName(), on); >> } >> } >> >> PDAppearanceEntry ae = new PDAppearanceEntry(aeDict); >> appearance.setNormalAppearance(ae); >> widget.setAppearance(appearance); >> widgets.add(widget); >> page.getAnnotations().add(widget); >> >> contents.beginText(); >> contents.setFont(font, 10); >> contents.newLineAtOffset(56, 811 - i * (21) + 4); >> contents.showText(options.get(i)); >> contents.endText(); >> } >> radioButton.setWidgets(widgets); >> acroForm.getFields().add(radioButton); >> >> contents.close(); >> try (FileOutputStream output = new >> FileOutputStream("D:\\RadioTest.pdf")) >> { >> document.save(output); >> } >> document.close(); >> } >> catch (IOException e) >> { >> e.printStackTrace(); >> } >> >> How to make radio button "b" as selected? >> >> Thanks, >> Bharat >> >> >

