FormSubmit.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
'' このサンプルは、ユーザーが送信できる AcroForm PDF を作成する方法を示します。
'' ここでは、その内容をデモサーバーに送信します。サーバーはそのデータを受信し、
'' 特別な形式で返送します。
Public Class FormSubmit
Function CreatePDF(ByVal stream As Stream) As Integer
Dim doc = New GcPdfDocument()
Dim page = doc.NewPage()
Dim rc = Util.AddNote(
"このサンプルでは、Submit ボタンは ActionSubmitForm アクションに関連付けられており、" +
"URL はサンプルサーバー上で実行されている POST ハンドラを指しています。" +
"フォームが送信されると、そのハンドラは入力されたフォームからフォームのフィールド名と" +
"フィールド値のコレクションを受け取り、それをシンプルな HTML ページに返します。" +
"このサンプルをダウンロードした場合、正常に実行するには、独自のハンドラを設定し、" +
"[送信]ボタンアクションの URL をそのハンドラを指すように変更する必要があります。",
page)
Dim g = page.Graphics
Dim tf = New TextFormat() With {.Font = Util.getFont(), .FontSize = 12}
Dim ip = New PointF(72, rc.Bottom + 36)
Dim fldOffset = 72.0F * 2 + 46
Dim fldHeight = tf.FontSize * 1.2F
Dim dY = 32.0F
'' テキストフィールド。
g.DrawString("お名前(姓):", tf, ip)
Dim fldFirstName = New TextField() With {.Name = "LastName", .Value = "吉良"}
fldFirstName.Widget.Page = page
fldFirstName.Widget.Rect = New RectangleF(ip.X + fldOffset, ip.Y, 72 * 3, fldHeight)
fldFirstName.Widget.DefaultAppearance.Font = tf.Font
fldFirstName.Widget.DefaultAppearance.FontSize = tf.FontSize
doc.AcroForm.Fields.Add(fldFirstName)
ip.Y += dY
'' テキストフィールド。
g.DrawString("お名前(名):", tf, ip)
Dim fldLastName = New TextField() With {.Name = "FirstName", .Value = "富似雄"}
fldLastName.Widget.Page = page
fldLastName.Widget.Rect = New RectangleF(ip.X + fldOffset, ip.Y, 72 * 3, fldHeight)
fldLastName.Widget.DefaultAppearance.Font = tf.Font
fldLastName.Widget.DefaultAppearance.FontSize = tf.FontSize
doc.AcroForm.Fields.Add(fldLastName)
ip.Y += dY
'' チェックボックス。
g.DrawString("メールマガジンの配信登録:", tf, ip)
Dim fldCheckbox = New CheckBoxField() With {.Name = "Subscribe", .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 fldAdditionalInformation = New TextField() With {.Name = "AdditionalInformation", .Multiline = True}
fldAdditionalInformation.Widget.Page = page
fldAdditionalInformation.Widget.Rect = New RectangleF(ip.X + fldOffset, ip.Y, 72 * 3, fldHeight * 2)
fldAdditionalInformation.Widget.DefaultAppearance.Font = tf.Font
fldAdditionalInformation.Widget.DefaultAppearance.FontSize = tf.FontSize
doc.AcroForm.Fields.Add(fldAdditionalInformation)
ip.Y += dY * 2
'' フォーム送信ボタン。
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.Page = page
'' 送信用の URL。
btnSubmit.Widget.Activate = New ActionSubmitForm("/Samples/HandleFormSubmitFields")
doc.AcroForm.Fields.Add(btnSubmit)
'' フォームリセットボタン。
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