VintaSoft Imaging .NET SDK 15.1: Documentation for .NET developer
Vintasoft.Imaging.Pdf.Tree.InteractiveForms Namespace / PdfInteractiveFormRadioButtonGroupField Class
Members Object Syntax Remarks Example Hierarchy Requirements SeeAlso
In This Topic
PdfInteractiveFormRadioButtonGroupField Class
In This Topic
Provides information about a group of radio button interactive form fields.
Object Model
PdfFont PdfInteractiveFormFieldAdditionalActions PdfInteractiveFormField PdfWidgetAnnotation PdfInteractiveFormFieldList PdfDocument PdfIndirectReference PdfBasicObject PdfInteractiveFormRadioButtonGroupField
Syntax
'Declaration

Public Class PdfInteractiveFormRadioButtonGroupField
   Inherits PdfInteractiveFormSwitchableButtonGroupField

public class PdfInteractiveFormRadioButtonGroupField : PdfInteractiveFormSwitchableButtonGroupField

Remarks

A radio button field is a set of related buttons.

Note: An exception occurs when multiple radio buttons in a field have the same on state and the IsRadiosInUnison property is set to true. In that case, turning on one of the buttons turns on all of them.

Use the CheckedAppearanceStateName property for changing the field value.
Use the DefaultCheckedAppearanceStateName property for changing the default value of field.

Example

Here is an example that shows how to create a PDF document with two radio button groups:


Class PdfInteractiveFormRadioButtonGroupFieldExample
    ''' <summary>
    ''' Creates a PDF document with radio button group fields.
    ''' </summary>
    ''' <param name="filename">The filename.</param>
    Public Shared Sub CreateDocumentWithRadioButtonGroupField(filename As String)
        ' create PDF document
        Using document As New Vintasoft.Imaging.Pdf.PdfDocument()
            ' create interactive form in PDF document
            document.InteractiveForm = New Vintasoft.Imaging.Pdf.Tree.InteractiveForms.PdfDocumentInteractiveForm(document)

            ' specify that the viewer application must construct appearance streams and
            ' appearance properties for all widget annotations
            document.InteractiveForm.NeedAppearances = True

            ' create an empty page
            Dim page As New Vintasoft.Imaging.Pdf.Tree.PdfPage(document, Vintasoft.Imaging.PaperSizeKind.A4)
            ' add page to the document
            document.Pages.Add(page)

            ' "ZapfDingbats" font
            Dim fontSize As Single = 15
            Dim font As Vintasoft.Imaging.Pdf.Tree.Fonts.PdfFont = document.FontManager.GetStandardFont(Vintasoft.Imaging.Pdf.Tree.Fonts.PdfStandardFontType.ZapfDingbats)

            Dim width As Single = 100
            Dim height As Single = 30
            ' create a rectangle that defines the first radio button group position on PDF page
            Dim rect As New System.Drawing.RectangleF((page.Size.Width - width) / 2, ((page.Size.Height - height) / 3) * 2, width, height)

            ' create the first radio button group
            Dim radioGroup1 As New Vintasoft.Imaging.Pdf.Tree.InteractiveForms.PdfInteractiveFormRadioButtonGroupField(document, "RadioGroup1")
            ' add radio buttons to the radio button group
            AddSimpleRadioButtons(radioGroup1, font, fontSize, rect, System.Drawing.Color.Green, "1", _
                "2", "3", "4", "5")
            ' change the state of radio button with value "2" to the checked state
            radioGroup1.CheckedAppearanceStateName = "2"

            ' create a rectangle that defines the second radio button group position on PDF page
            rect = New System.Drawing.RectangleF(rect.X, rect.Y - rect.Height, rect.Width, rect.Height)

            ' create the second radio button group
            Dim radioGroup2 As New Vintasoft.Imaging.Pdf.Tree.InteractiveForms.PdfInteractiveFormRadioButtonGroupField(document, "RadioGroup2")
            ' add radio buttons to the radio button group
            AddSimpleRadioButtons(radioGroup2, font, fontSize, rect, System.Drawing.Color.Red, "One", _
                "Two", "Three")
            ' change the state of radio button with value "Two" to the checked state
            radioGroup2.CheckedAppearanceStateName = "Two"

            ' add radio button groups to the interactive form of document
            document.InteractiveForm.Fields.Add(radioGroup1)
            document.InteractiveForm.Fields.Add(radioGroup2)

            ' add annotations, associated with radio button group fields, to the page
            page.Annotations = New Vintasoft.Imaging.Pdf.Tree.Annotations.PdfAnnotationList(document)
            page.Annotations.AddRange(radioGroup1.GetAnnotations())
            page.Annotations.AddRange(radioGroup2.GetAnnotations())

            ' save the document
            document.Save(filename)
        End Using
    End Sub

    ''' <summary>
    ''' Adds simple radio buttons to a radio button group.
    ''' </summary>
    ''' <param name="radioButtonGroup">The parent radio button group.</param>
    ''' <param name="font">The font.</param>
    ''' <param name="fontSize">The font size.</param>
    ''' <param name="rect">Rectangle that defines radio button group position on PDF page.</param>
    ''' <param name="onColor">Button color in "on" state.</param>
    ''' <param name="values">The values of radio buttons.</param>
    Private Shared Sub AddSimpleRadioButtons(radioButtonGroup As Vintasoft.Imaging.Pdf.Tree.InteractiveForms.PdfInteractiveFormRadioButtonGroupField, font As Vintasoft.Imaging.Pdf.Tree.Fonts.PdfFont, fontSize As Single, rect As System.Drawing.RectangleF, onColor As System.Drawing.Color, ParamArray values As String())
        Dim offBrush As New Vintasoft.Imaging.Pdf.Drawing.PdfBrush(System.Drawing.Color.Black)
        Dim onBrush As New Vintasoft.Imaging.Pdf.Drawing.PdfBrush(onColor)

        ' for each value
        For i As Integer = 0 To values.Length - 1
            ' create a rectangle that defines radio button position on PDF page
            Dim radioButtonRect As New System.Drawing.RectangleF(rect.X + i * rect.Width / values.Length, rect.Y, rect.Width / values.Length, rect.Height)

            ' create a radio button
            Dim radioButton As New Vintasoft.Imaging.Pdf.Tree.InteractiveForms.PdfInteractiveFormRadioButtonField(radioButtonGroup.Document, radioButtonRect)

            ' create a rectangle that defines size of the radio button content
            radioButtonRect = New System.Drawing.RectangleF(0, 0, radioButtonRect.Width, radioButtonRect.Height)

            ' create ON button appearance
            Using g As Vintasoft.Imaging.Pdf.Drawing.PdfGraphics = radioButton.CreateAppearanceGraphics(values(i))
                g.DrawString("m", font, fontSize, offBrush, radioButtonRect, Vintasoft.Imaging.Pdf.Drawing.PdfContentAlignment.Center, _
                    False)
                g.DrawString("l", font, fontSize, onBrush, radioButtonRect, Vintasoft.Imaging.Pdf.Drawing.PdfContentAlignment.Center, _
                    False)
            End Using
            ' create "Off" button appearance
            Using g As Vintasoft.Imaging.Pdf.Drawing.PdfGraphics = radioButton.CreateOffAppearanceGraphics()
                g.DrawString("m", font, fontSize, offBrush, radioButtonRect, Vintasoft.Imaging.Pdf.Drawing.PdfContentAlignment.Center, _
                    False)
            End Using

            ' add new radio button to radio button group
            radioButtonGroup.Kids.Add(radioButton)
        Next
    End Sub
End Class


class PdfInteractiveFormRadioButtonGroupFieldExample
{
    /// <summary>
    /// Creates a PDF document with radio button group fields.
    /// </summary>
    /// <param name="filename">The filename.</param>
    public static void CreateDocumentWithRadioButtonGroupField(string filename)
    {
        // create PDF document
        using (Vintasoft.Imaging.Pdf.PdfDocument document = new Vintasoft.Imaging.Pdf.PdfDocument())
        {
            // create interactive form in PDF document
            document.InteractiveForm = new Vintasoft.Imaging.Pdf.Tree.InteractiveForms.PdfDocumentInteractiveForm(document);

            // specify that the viewer application must construct appearance streams and
            // appearance properties for all widget annotations
            document.InteractiveForm.NeedAppearances = true;

            // create an empty page
            Vintasoft.Imaging.Pdf.Tree.PdfPage page = new Vintasoft.Imaging.Pdf.Tree.PdfPage(
                document, Vintasoft.Imaging.PaperSizeKind.A4);
            // add page to the document
            document.Pages.Add(page);

            // "ZapfDingbats" font
            float fontSize = 15;
            Vintasoft.Imaging.Pdf.Tree.Fonts.PdfFont font = document.FontManager.GetStandardFont(
                Vintasoft.Imaging.Pdf.Tree.Fonts.PdfStandardFontType.ZapfDingbats);

            float width = 100;
            float height = 30;
            // create a rectangle that defines the first radio button group position on PDF page
            System.Drawing.RectangleF rect = new System.Drawing.RectangleF(
                (page.Size.Width - width) / 2,
                ((page.Size.Height - height) / 3) * 2,
                width, height);

            // create the first radio button group
            Vintasoft.Imaging.Pdf.Tree.InteractiveForms.PdfInteractiveFormRadioButtonGroupField radioGroup1 = 
                new Vintasoft.Imaging.Pdf.Tree.InteractiveForms.PdfInteractiveFormRadioButtonGroupField(document, "RadioGroup1");
            // add radio buttons to the radio button group
            AddSimpleRadioButtons(radioGroup1, font, fontSize, rect, System.Drawing.Color.Green, "1", "2", "3", "4", "5");
            // change the state of radio button with value "2" to the checked state
            radioGroup1.CheckedAppearanceStateName = "2";

            // create a rectangle that defines the second radio button group position on PDF page
            rect = new System.Drawing.RectangleF(rect.X, rect.Y - rect.Height, rect.Width, rect.Height);

            // create the second radio button group
            Vintasoft.Imaging.Pdf.Tree.InteractiveForms.PdfInteractiveFormRadioButtonGroupField radioGroup2 =
                new Vintasoft.Imaging.Pdf.Tree.InteractiveForms.PdfInteractiveFormRadioButtonGroupField(document, "RadioGroup2");
            // add radio buttons to the radio button group
            AddSimpleRadioButtons(radioGroup2, font, fontSize, rect, System.Drawing.Color.Red, "One", "Two", "Three");
            // change the state of radio button with value "Two" to the checked state
            radioGroup2.CheckedAppearanceStateName = "Two";

            // add radio button groups to the interactive form of document
            document.InteractiveForm.Fields.Add(radioGroup1);
            document.InteractiveForm.Fields.Add(radioGroup2);

            // add annotations, associated with radio button group fields, to the page
            page.Annotations = new Vintasoft.Imaging.Pdf.Tree.Annotations.PdfAnnotationList(document);
            page.Annotations.AddRange(radioGroup1.GetAnnotations());
            page.Annotations.AddRange(radioGroup2.GetAnnotations());

            // save the document
            document.Save(filename);
        }
    }

    /// <summary>
    /// Adds simple radio buttons to a radio button group.
    /// </summary>
    /// <param name="radioButtonGroup">The parent radio button group.</param>
    /// <param name="font">The font.</param>
    /// <param name="fontSize">The font size.</param>
    /// <param name="rect">Rectangle that defines radio button group position on PDF page.</param>
    /// <param name="onColor">Button color in "on" state.</param>
    /// <param name="values">The values of radio buttons.</param>
    private static void AddSimpleRadioButtons(
        Vintasoft.Imaging.Pdf.Tree.InteractiveForms.PdfInteractiveFormRadioButtonGroupField radioButtonGroup,
        Vintasoft.Imaging.Pdf.Tree.Fonts.PdfFont font,
        float fontSize, 
        System.Drawing.RectangleF rect,
        System.Drawing.Color onColor,
        params string[] values)
    {
        Vintasoft.Imaging.Pdf.Drawing.PdfBrush offBrush = 
            new Vintasoft.Imaging.Pdf.Drawing.PdfBrush(System.Drawing.Color.Black);
        Vintasoft.Imaging.Pdf.Drawing.PdfBrush onBrush = 
            new Vintasoft.Imaging.Pdf.Drawing.PdfBrush(onColor);

        // for each value
        for (int i = 0; i < values.Length; i++)
        {
            // create a rectangle that defines radio button position on PDF page
            System.Drawing.RectangleF radioButtonRect = new System.Drawing.RectangleF(
                rect.X + i * rect.Width / values.Length, rect.Y, rect.Width / values.Length, rect.Height);
            
            // create a radio button
            Vintasoft.Imaging.Pdf.Tree.InteractiveForms.PdfInteractiveFormRadioButtonField radioButton = 
                new Vintasoft.Imaging.Pdf.Tree.InteractiveForms.PdfInteractiveFormRadioButtonField(
                    radioButtonGroup.Document, radioButtonRect);

            // create a rectangle that defines size of the radio button content
            radioButtonRect = new System.Drawing.RectangleF(0, 0, radioButtonRect.Width, radioButtonRect.Height);
            
            // create ON button appearance
            using (Vintasoft.Imaging.Pdf.Drawing.PdfGraphics g = radioButton.CreateAppearanceGraphics(values[i]))
            {
                g.DrawString("m", font, fontSize, offBrush, radioButtonRect, 
                    Vintasoft.Imaging.Pdf.Drawing.PdfContentAlignment.Center, false);
                g.DrawString("l", font, fontSize, onBrush, radioButtonRect, 
                    Vintasoft.Imaging.Pdf.Drawing.PdfContentAlignment.Center, false);
            }
            // create "Off" button appearance
            using (Vintasoft.Imaging.Pdf.Drawing.PdfGraphics g = radioButton.CreateOffAppearanceGraphics())
            {
                g.DrawString("m", font, fontSize, offBrush, radioButtonRect, 
                    Vintasoft.Imaging.Pdf.Drawing.PdfContentAlignment.Center, false);
            }

            // add new radio button to radio button group
            radioButtonGroup.Kids.Add(radioButton);
        }
    }
}

Inheritance Hierarchy
Requirements

Target Platforms: .NET 10; .NET 9; .NET 8; .NET 7; .NET 6; .NET Framework 4.8, 4.7, 4.6, 4.5, 4.0, 3.5

See Also