VintaSoft Imaging .NET SDK 14.0: Документация для .NET разработчика
Vintasoft.Imaging.Pdf.Tree.InteractiveForms Namespace / PdfInteractiveFormRadioButtonGroupField Class
    Класс PdfInteractiveFormRadioButtonGroupField
    В этом разделе
    Предоставляет информацию о группе полей интерактивной формы переключателей.
    Объектная модель
    PdfFont PdfInteractiveFormFieldAdditionalActions PdfInteractiveFormField PdfWidgetAnnotation PdfInteractiveFormFieldList PdfDocument PdfIndirectReference PdfBasicObject PdfInteractiveFormRadioButtonGroupField
    Синтаксис
    'Declaration
    
    Public Class PdfInteractiveFormRadioButtonGroupField
       Inherits PdfInteractiveFormSwitchableButtonGroupField
    
    
    public class PdfInteractiveFormRadioButtonGroupField : PdfInteractiveFormSwitchableButtonGroupField
    
    
    public __gc class PdfInteractiveFormRadioButtonGroupField : public PdfInteractiveFormSwitchableButtonGroupField*
    
    
    public ref class PdfInteractiveFormRadioButtonGroupField : public PdfInteractiveFormSwitchableButtonGroupField^
    
    
    Ремарки

    Поле переключателя - это набор связанных кнопок.

    Примечание. Исключение возникает, когда несколько переключателей в поле имеют одинаковое состояние "включено", а свойство IsRadiosInUnison имеет значение true. В этом случае включение одной из кнопок включает все кнопки.

    Используйте свойство CheckedAppearanceStateName для изменения значения поля.
    Используйте свойство DefaultCheckedAppearanceStateName для изменения значения поля по умолчанию.

    Пример

    Вот пример, показывающий, как создать PDF документ с двумя группами переключателей:

    
    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);
            }
        }
    }
    
    

    Иерархия наследования
    Требования

    Целевые платформы: .NET 8; .NET 7; .NET 6; .NET Framework 4.8, 4.7, 4.6, 4.5, 4.0, 3.5

    Смотрите также