FormSubmit.cs
//
// このコードは、DioDocs for PDF のサンプルの一部として提供されています。
// © MESCIUS inc. All rights reserved.
//
using GrapeCity.Documents.Pdf;
using GrapeCity.Documents.Pdf.AcroForms;
using GrapeCity.Documents.Pdf.Actions;
using GrapeCity.Documents.Pdf.Annotations;
using GrapeCity.Documents.Text;
using System.Drawing;
using System.IO;
namespace DsPdfWeb.Demos
{
// このサンプルは、ユーザーが送信できる AcroForm PDF を作成する方法を示します。
// ここでは、その内容をデモサーバーに送信します。サーバーはそのデータを受信し、
// 特別な形式で返送します。
public class FormSubmit
{
public int CreatePDF(Stream stream)
{
var doc = new GcPdfDocument();
var page = doc.NewPage();
var rc = Common.Util.AddNote(
"このサンプルでは、Submit ボタンは ActionSubmitForm アクションに関連付けられており、" +
"URL はサンプルサーバー上で実行されている POST ハンドラを指しています。" +
"フォームが送信されると、そのハンドラは入力されたフォームからフォームのフィールド名と" +
"フィールド値のコレクションを受け取り、それをシンプルな HTML ページに返します。" +
"このサンプルをダウンロードした場合、正常に実行するには、独自のハンドラを設定し、" +
"[送信]ボタンアクションの URL をそのハンドラを指すように変更する必要があります。",
page);
var g = page.Graphics;
var tf = new TextFormat() { Font = Common.Util.getFont(), FontSize = 12 };
var ip = new PointF(72, rc.Bottom + 36);
float fldOffset = 72 * 2 + 46;
float fldHeight = tf.FontSize * 1.2f;
float dY = 32;
// テキストフィールド。
g.DrawString("お名前(姓):", tf, ip);
var fldFirstName = new TextField() { 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);
var fldLastName = new TextField() { 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);
var fldCheckbox = new CheckBoxField() { 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);
var fldAdditionalInfo = new TextField() { Name = "AdditionalInfo", Multiline = true };
fldAdditionalInfo.Widget.Page = page;
fldAdditionalInfo.Widget.Rect = new RectangleF(ip.X + fldOffset, ip.Y, 72 * 3, fldHeight * 2);
fldAdditionalInfo.Widget.DefaultAppearance.Font = tf.Font;
fldAdditionalInfo.Widget.DefaultAppearance.FontSize = tf.FontSize;
doc.AcroForm.Fields.Add(fldAdditionalInfo);
ip.Y += dY * 2;
// フォーム送信ボタン。
var btnSubmit = new PushButtonField();
btnSubmit.Widget.Rect = new RectangleF(ip.X + fldOffset, ip.Y, 72, fldHeight);
btnSubmit.Widget.ButtonAppearance.Caption = "送信";
btnSubmit.Widget.DefaultAppearance.Font = tf.Font;
btnSubmit.Widget.Highlighting = HighlightingMode.Invert;
btnSubmit.Widget.Page = page;
// 送信用の URL。
btnSubmit.Widget.Activate = new ActionSubmitForm("/Samples/HandleFormSubmitFields");
doc.AcroForm.Fields.Add(btnSubmit);
// フォームリセットボタン。
var 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.DefaultAppearance.Font = tf.Font;
btnReset.Widget.Page = page;
btnReset.Widget.Activate = new ActionResetForm();
doc.AcroForm.Fields.Add(btnReset);
ip.Y += dY;
// Done:
doc.Save(stream);
return doc.Pages.Count;
}
}
}