FormFields.vb
  1. ''
  2. '' This code is part of Document Solutions for PDF demos.
  3. '' Copyright (c) MESCIUS inc. All rights reserved.
  4. ''
  5. Imports System.IO
  6. Imports System.Drawing
  7. Imports GrapeCity.Documents.Text
  8. Imports GrapeCity.Documents.Pdf
  9. Imports GrapeCity.Documents.Pdf.AcroForms
  10. Imports GrapeCity.Documents.Pdf.Annotations
  11. Imports GrapeCity.Documents.Pdf.Actions
  12.  
  13. '' This sample demonstrates how to create the various AcroForm fields
  14. '' such as textbox, checkbox, push buttons and so on.
  15. Public Class FormFields
  16. Function CreatePDF(ByVal stream As Stream) As Integer
  17. Dim doc = New GcPdfDocument()
  18. Dim page = doc.NewPage()
  19. Dim g = page.Graphics
  20. Dim tf = New TextFormat()
  21. tf.Font = StandardFonts.Times
  22. tf.FontSize = 14
  23. Dim ip = New PointF(72, 72)
  24. Dim fldOffset = 72.0F * 2
  25. Dim fldHeight = tf.FontSize * 1.2F
  26. Dim dY = 32.0F
  27.  
  28. '' Text field:
  29. g.DrawString("Text field:", tf, ip)
  30. Dim fldText = New TextField()
  31. fldText.Value = "Initial TextField value"
  32. fldText.Widget.Page = page
  33. fldText.Widget.Rect = New RectangleF(ip.X + fldOffset, ip.Y, 72 * 3, fldHeight)
  34. fldText.Widget.DefaultAppearance.Font = tf.Font
  35. fldText.Widget.DefaultAppearance.FontSize = tf.FontSize
  36. doc.AcroForm.Fields.Add(fldText)
  37. ip.Y += dY
  38.  
  39. '' Checkbox:
  40. g.DrawString("Checkbox:", tf, ip)
  41. Dim fldCheckbox = New CheckBoxField()
  42. fldCheckbox.Checked = True
  43. fldCheckbox.Widget.Page = page
  44. fldCheckbox.Widget.Rect = New RectangleF(ip.X + fldOffset, ip.Y, fldHeight, fldHeight)
  45. doc.AcroForm.Fields.Add(fldCheckbox)
  46. ip.Y += dY
  47.  
  48. '' Radio button:
  49. g.DrawString("Radio button:", tf, ip)
  50. Dim fldRadio = New RadioButtonField()
  51. fldRadio.Value = 1
  52. fldRadio.Widgets.Add(New WidgetAnnotation(page, New RectangleF(ip.X + fldOffset, ip.Y, fldHeight, fldHeight)))
  53. fldRadio.Widgets.Add(New WidgetAnnotation(page, New RectangleF(ip.X + fldOffset, ip.Y + fldHeight * 1.2F, fldHeight, fldHeight)))
  54. fldRadio.Widgets.Add(New WidgetAnnotation(page, New RectangleF(ip.X + fldOffset, ip.Y + (fldHeight * 1.2F) * 2, fldHeight, fldHeight)))
  55. doc.AcroForm.Fields.Add(fldRadio)
  56. ip.Y = fldRadio.Widgets(fldRadio.Widgets.Count - 1).Rect.Y + dY
  57.  
  58. '' CombTextField
  59. g.DrawString("CombText field:", tf, ip)
  60. Dim fldCombText = New CombTextField()
  61. fldCombText.Value = "123"
  62. fldCombText.Widget.DefaultAppearance.FontSize = 12
  63. fldCombText.Widget.Rect = New RectangleF(ip.X + fldOffset, ip.Y, 72 * 3, fldHeight)
  64. fldCombText.Widget.Page = page
  65. doc.AcroForm.Fields.Add(fldCombText)
  66. ip.Y += dY
  67.  
  68. '' Combo-box:
  69. g.DrawString("Combo box:", tf, ip)
  70. Dim fldComboBox = New ComboBoxField()
  71. fldComboBox.Items.Add(New ChoiceFieldItem("ComboBox Choice 1"))
  72. fldComboBox.Items.Add(New ChoiceFieldItem("ComboBox Choice 2"))
  73. fldComboBox.Items.Add(New ChoiceFieldItem("ComboBox Choice 3"))
  74. fldComboBox.SelectedIndex = 1
  75. fldComboBox.Widget.Rect = New RectangleF(ip.X + fldOffset, ip.Y, 72 * 3, fldHeight)
  76. fldComboBox.Widget.Page = page
  77. doc.AcroForm.Fields.Add(fldComboBox)
  78. ip.Y += dY
  79.  
  80. '' List box:
  81. g.DrawString("List box:", tf, ip)
  82. Dim fldListBox = New ListBoxField()
  83. fldListBox.Items.Add(New ChoiceFieldItem("ListBox Choice 1"))
  84. fldListBox.Items.Add(New ChoiceFieldItem("ListBox Choice 2"))
  85. fldListBox.Items.Add(New ChoiceFieldItem("ListBox Choice 3"))
  86. fldListBox.SelectedIndexes = New Integer() {0, 2}
  87. fldListBox.MultiSelect = True
  88. fldListBox.CommitOnSelChange = True
  89. fldListBox.Widget.Rect = New RectangleF(ip.X + fldOffset, ip.Y, 100, 50)
  90. fldListBox.Widget.Page = page
  91. doc.AcroForm.Fields.Add(fldListBox)
  92. ip.Y = fldListBox.Widget.Rect.Bottom - fldHeight + dY
  93.  
  94. '' Signature field:
  95. g.DrawString("Signature field:", tf, ip)
  96. Dim fldSignature = New SignatureField()
  97. fldSignature.AlternateName = "All fields locked when the document is signed"
  98. fldSignature.LockedFields = New SignatureLockedFields()
  99. fldSignature.Widget.Rect = New RectangleF(ip.X + fldOffset, ip.Y, 72 * 2, 72 - dY)
  100. fldSignature.Widget.DefaultAppearance.FontSize = 8
  101. fldSignature.Widget.ButtonAppearance.Caption = "Click to sign"
  102. fldSignature.Widget.Border = New Border() With {.Width = 0.5F, .Color = Color.DarkSeaGreen}
  103. fldSignature.Widget.Page = page
  104. doc.AcroForm.Fields.Add(fldSignature)
  105. ip.Y += 72 - fldHeight
  106.  
  107. '' Buttons:
  108. g.DrawString("Push buttons:", tf, ip)
  109. '' Submit form button:
  110. Dim btnSubmit = New PushButtonField()
  111. btnSubmit.Widget.Rect = New RectangleF(ip.X + fldOffset, ip.Y, 72, fldHeight)
  112. btnSubmit.Widget.ButtonAppearance.Caption = "Submit"
  113. btnSubmit.Widget.Highlighting = HighlightingMode.Invert
  114. btnSubmit.Widget.Activate = New ActionSubmitForm("Sample Form Submit URI")
  115. btnSubmit.Widget.Page = page
  116. doc.AcroForm.Fields.Add(btnSubmit)
  117. '' ip.Y += dY
  118.  
  119. '' Reset form button:
  120. Dim btnReset = New PushButtonField()
  121. btnReset.Widget.Rect = New RectangleF(ip.X + fldOffset + 72 * 1.5F, ip.Y, 72, fldHeight)
  122. btnReset.Widget.ButtonAppearance.Caption = "Reset"
  123. btnReset.Widget.Highlighting = HighlightingMode.Invert
  124. btnReset.Widget.Activate = New ActionResetForm()
  125. btnReset.Widget.Page = page
  126. doc.AcroForm.Fields.Add(btnReset)
  127. ip.Y += dY
  128. ''
  129. '' Done:
  130. doc.Save(stream)
  131. Return doc.Pages.Count
  132. End Function
  133. End Class
  134.