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