FormFields.vb
''
'' このコードは、DioDocs for PDF のサンプルの一部として提供されています。
'' © 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
'' テキストボックス、チェックボックス、プッシュボタンなど、
'' 各種フォームフィールドを作成する方法を示しています。
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.FontName = "Yu Gothic"
tf.FontSize = 14
Dim ip = New PointF(72, 72)
Dim fldOffset = 72.0F * 2
Dim fldHeight = tf.FontSize * 1.2F
Dim dY = 32.0F
'' テキストフィールド。
g.DrawString("テキストフィールド", tf, ip)
Dim fldText = New TextField()
fldText.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
'' チェックボックス。
g.DrawString("チェックボックス", 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
'' ラジオボタン。
g.DrawString("ラジオボタン", 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
'' マス目フィールド。
g.DrawString("マス目フィールド", 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
'' コンボボックス。
g.DrawString("コンボボックス", tf, ip)
Dim fldComboBox = New ComboBoxField()
fldComboBox.Items.Add(New ChoiceFieldItem("選択肢1"))
fldComboBox.Items.Add(New ChoiceFieldItem("選択肢2"))
fldComboBox.Items.Add(New ChoiceFieldItem("選択肢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
'' リストボックス。
g.DrawString("リストボックス:", tf, ip)
Dim fldListBox = New ListBoxField()
fldListBox.Items.Add(New ChoiceFieldItem("リスト項目1"))
fldListBox.Items.Add(New ChoiceFieldItem("リスト項目2"))
fldListBox.Items.Add(New ChoiceFieldItem("リスト項目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
'' 署名フィールド。
g.DrawString("電子署名:", tf, ip)
Dim fldSignature = New SignatureField()
fldSignature.AlternateName = "署名された文書は全てのフィールドがロックされます"
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 = "クリックして署名"
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
'' ボタン。
g.DrawString("ボタン:", tf, ip)
'' フォーム送信ボタン。
Dim btnSubmit = New PushButtonField()
btnSubmit.Widget.Rect = New RectangleF(ip.X + fldOffset, ip.Y, 72, fldHeight)
btnSubmit.Widget.ButtonAppearance.Caption = "送信"
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
'' フォームリセットボタン。
Dim btnReset = New PushButtonField()
btnReset.Widget.Rect = New RectangleF(ip.X + fldOffset + 72 * 1.5F, ip.Y, 72, fldHeight)
btnReset.Widget.ButtonAppearance.Caption = "リセット"
btnReset.Widget.Highlighting = HighlightingMode.Invert
btnReset.Widget.Activate = New ActionResetForm()
btnReset.Widget.Page = page
doc.AcroForm.Fields.Add(btnReset)
ip.Y += dY
''
'' PDF ドキュメントを保存します。
doc.Save(stream)
Return doc.Pages.Count
End Function
End Class