VintaSoft Imaging .NET SDK v8.6
Vintasoft.Imaging.Pdf.Tree.InteractiveForms Namespace / PdfInteractiveFormRadioButtonGroupField Class
Members Example



In This Topic
    PdfInteractiveFormRadioButtonGroupField Class
    In This Topic
    Provides information about a group of radio button interactive form fields.
    Object Model
    PdfInteractiveFormRadioButtonGroupField ClassPdfInteractiveFormFieldAdditionalActions ClassPdfWidgetAnnotation ClassPdfBasicObject ClassPdfDocument ClassPdfFont ClassPdfIndirectReference ClassPdfInteractiveFormFieldList ClassPdfInteractiveFormField ClassPdfInteractiveFormField Class
    Syntax
    'Declaration
     
    Public Class PdfInteractiveFormRadioButtonGroupField 
       Inherits PdfInteractiveFormSwitchableButtonGroupField
    public class PdfInteractiveFormRadioButtonGroupField : PdfInteractiveFormSwitchableButtonGroupField 
    public __gc class PdfInteractiveFormRadioButtonGroupField : public PdfInteractiveFormSwitchableButtonGroupField 
    public ref class PdfInteractiveFormRadioButtonGroupField : public 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 PdfInteractiveFormSwitchableButtonGroupField.CheckedAppearanceStateName property for changing the field value.
    Use the PdfInteractiveFormSwitchableButtonGroupField.DefaultCheckedAppearanceStateName property for changing the default value of field.
    Example
    This example 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: Windows 10, Windows 8, Windows 7, Windows Vista, Windows XP, Windows Server 2012, Windows Server 2008, Windows Server 2003

    See Also