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