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

Reply via email to