//// This code is part of Document Solutions for PDF .NET demos.// Copyright (c) MESCIUS inc. All rights reserved.//using System.IO;using System.Drawing;using GrapeCity.Documents.Pdf;using GrapeCity.Documents.Text;using GrapeCity.Documents.Pdf.AcroForms;using GrapeCity.Documents.Pdf.Annotations;using GrapeCity.Documents.Pdf.Actions;
namespace DsPdfWeb.Demos{ // This sample demonstrates how to create the various AcroForm fields // such as textbox, checkbox, push buttons and so on. public class FormFields { public int CreatePDF(Stream stream) { var doc = new GcPdfDocument(); var page = doc.NewPage(); var g = page.Graphics; var tf = new TextFormat(); tf.Font = StandardFonts.Times; tf.FontSize = 14; var ip = new PointF(72, 72); float fldOffset = 72 * 2; float fldHeight = tf.FontSize * 1.2f; float dY = 32;
// Text field: g.DrawString("Text field:", tf, ip); var 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); var 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); var 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); var 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); var 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); var 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 int[] { 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); var 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() { 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: var 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: var 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; } }}