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