FormFields.vb
''
'' This code is part of Document Solutions for PDF demos.
'' Copyright (c) MESCIUS inc. All rights reserved.
''
Imports System.IO
Imports System.Drawing
Imports GrapeCity.Documents.Text
Imports GrapeCity.Documents.Pdf
Imports GrapeCity.Documents.Pdf.AcroForms
Imports GrapeCity.Documents.Pdf.Annotations
Imports GrapeCity.Documents.Pdf.Actions
'' This sample demonstrates how to create the various AcroForm fields
'' such as textbox, checkbox, push buttons and so on.
Public Class FormFields
Function CreatePDF(ByVal stream As Stream) As Integer
Dim doc = New GcPdfDocument()
Dim page = doc.NewPage()
Dim g = page.Graphics
Dim tf = New TextFormat()
tf.Font = StandardFonts.Times
tf.FontSize = 14
Dim ip = New PointF(72, 72)
Dim fldOffset = 72.0F * 2
Dim fldHeight = tf.FontSize * 1.2F
Dim dY = 32.0F
'' Text field:
g.DrawString("Text field:", tf, ip)
Dim fldText = New TextField()
fldText.Value = "Initial TextField value"
fldText.Widget.Page = page
fldText.Widget.Rect = New RectangleF(ip.X + fldOffset, ip.Y, 72 * 3, fldHeight)
fldText.Widget.DefaultAppearance.Font = tf.Font
fldText.Widget.DefaultAppearance.FontSize = tf.FontSize
doc.AcroForm.Fields.Add(fldText)
ip.Y += dY
'' Checkbox:
g.DrawString("Checkbox:", tf, ip)
Dim fldCheckbox = New CheckBoxField()
fldCheckbox.Checked = True
fldCheckbox.Widget.Page = page
fldCheckbox.Widget.Rect = New RectangleF(ip.X + fldOffset, ip.Y, fldHeight, fldHeight)
doc.AcroForm.Fields.Add(fldCheckbox)
ip.Y += dY
'' Radio button:
g.DrawString("Radio button:", tf, ip)
Dim fldRadio = New RadioButtonField()
fldRadio.Value = 1
fldRadio.Widgets.Add(New WidgetAnnotation(page, New RectangleF(ip.X + fldOffset, ip.Y, fldHeight, fldHeight)))
fldRadio.Widgets.Add(New WidgetAnnotation(page, New RectangleF(ip.X + fldOffset, ip.Y + fldHeight * 1.2F, fldHeight, fldHeight)))
fldRadio.Widgets.Add(New WidgetAnnotation(page, New RectangleF(ip.X + fldOffset, ip.Y + (fldHeight * 1.2F) * 2, fldHeight, fldHeight)))
doc.AcroForm.Fields.Add(fldRadio)
ip.Y = fldRadio.Widgets(fldRadio.Widgets.Count - 1).Rect.Y + dY
'' CombTextField
g.DrawString("CombText field:", tf, ip)
Dim fldCombText = New CombTextField()
fldCombText.Value = "123"
fldCombText.Widget.DefaultAppearance.FontSize = 12
fldCombText.Widget.Rect = New RectangleF(ip.X + fldOffset, ip.Y, 72 * 3, fldHeight)
fldCombText.Widget.Page = page
doc.AcroForm.Fields.Add(fldCombText)
ip.Y += dY
'' Combo-box:
g.DrawString("Combo box:", tf, ip)
Dim fldComboBox = New ComboBoxField()
fldComboBox.Items.Add(New ChoiceFieldItem("ComboBox Choice 1"))
fldComboBox.Items.Add(New ChoiceFieldItem("ComboBox Choice 2"))
fldComboBox.Items.Add(New ChoiceFieldItem("ComboBox Choice 3"))
fldComboBox.SelectedIndex = 1
fldComboBox.Widget.Rect = New RectangleF(ip.X + fldOffset, ip.Y, 72 * 3, fldHeight)
fldComboBox.Widget.Page = page
doc.AcroForm.Fields.Add(fldComboBox)
ip.Y += dY
'' List box:
g.DrawString("List box:", tf, ip)
Dim fldListBox = New ListBoxField()
fldListBox.Items.Add(New ChoiceFieldItem("ListBox Choice 1"))
fldListBox.Items.Add(New ChoiceFieldItem("ListBox Choice 2"))
fldListBox.Items.Add(New ChoiceFieldItem("ListBox Choice 3"))
fldListBox.SelectedIndexes = New Integer() {0, 2}
fldListBox.MultiSelect = True
fldListBox.CommitOnSelChange = True
fldListBox.Widget.Rect = New RectangleF(ip.X + fldOffset, ip.Y, 100, 50)
fldListBox.Widget.Page = page
doc.AcroForm.Fields.Add(fldListBox)
ip.Y = fldListBox.Widget.Rect.Bottom - fldHeight + dY
'' Signature field:
g.DrawString("Signature field:", tf, ip)
Dim fldSignature = New SignatureField()
fldSignature.AlternateName = "All fields locked when the document is signed"
fldSignature.LockedFields = New SignatureLockedFields()
fldSignature.Widget.Rect = New RectangleF(ip.X + fldOffset, ip.Y, 72 * 2, 72 - dY)
fldSignature.Widget.DefaultAppearance.FontSize = 8
fldSignature.Widget.ButtonAppearance.Caption = "Click to sign"
fldSignature.Widget.Border = New Border() With {.Width = 0.5F, .Color = Color.DarkSeaGreen}
fldSignature.Widget.Page = page
doc.AcroForm.Fields.Add(fldSignature)
ip.Y += 72 - fldHeight
'' Buttons:
g.DrawString("Push buttons:", tf, ip)
'' Submit form button:
Dim btnSubmit = New PushButtonField()
btnSubmit.Widget.Rect = New RectangleF(ip.X + fldOffset, ip.Y, 72, fldHeight)
btnSubmit.Widget.ButtonAppearance.Caption = "Submit"
btnSubmit.Widget.Highlighting = HighlightingMode.Invert
btnSubmit.Widget.Activate = New ActionSubmitForm("Sample Form Submit URI")
btnSubmit.Widget.Page = page
doc.AcroForm.Fields.Add(btnSubmit)
'' ip.Y += dY
'' Reset form button:
Dim btnReset = New PushButtonField()
btnReset.Widget.Rect = New RectangleF(ip.X + fldOffset + 72 * 1.5F, ip.Y, 72, fldHeight)
btnReset.Widget.ButtonAppearance.Caption = "Reset"
btnReset.Widget.Highlighting = HighlightingMode.Invert
btnReset.Widget.Activate = New ActionResetForm()
btnReset.Widget.Page = page
doc.AcroForm.Fields.Add(btnReset)
ip.Y += dY
''
'' Done:
doc.Save(stream)
Return doc.Pages.Count
End Function
End Class