FormSubmitSound.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
{
// このサンプルは FormSubmit サンプルに似ていますが、フォームのSubmitボタンと
// フォームのResetボタンに ActionSound が追加されているため、
// ユーザーはフォームを送信またはリセットするときに音声によるフィードバックを受け取ることができます。
// このサンプルをダウンロードしてスタンドアロン モードで実行する場合は、
// 有効なサーバーを指すように送信 URL を更新する必要があることに注意してください。
public class FormSubmitSound
{
public int CreatePDF(Stream stream)
{
var doc = new GcPdfDocument();
var page = doc.NewPage();
var rc = Common.Util.AddNote(
"[フォームを送信する]サンプルと同様に、[送信]ボタンの Activate は ActionSubmitForm に関連付けられ、" +
"[リセット]ボタンの Activate は ActionResetForm に関連付けられています。" +
"\nこれらのハンドラーに加えて、このサンプルではボタンの MouseDown イベントが ActionSound に関連付けられているため、" +
"ユーザーはボタンをクリックしたときに適切な音声フィードバックを受け取ることができます。",
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(現在はActionSubmitFormを無効化しています)。
//動作を確認したい場合は、実際に使用可能な送信先URLを入力し、コメントアウトを解除してご利用ください。
//btnSubmit.Widget.Activate = new ActionSubmitForm("/Samples/HandleFormSubmitFields");
// 送信ボタンのMouseDownイベントに再生ファイルを設定します。
btnSubmit.Widget.Events.MouseDown = new ActionSound(SoundObject.FromFile(Path.Combine("Resources", "Sounds", "form-submitted.wav")));
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();
// リセットボタンのMouseDownイベントに再生ファイルを設定します。
btnReset.Widget.Events.MouseDown = new ActionSound(SoundObject.FromFile(Path.Combine("Resources", "Sounds", "form-reset.wav")));
doc.AcroForm.Fields.Add(btnReset);
ip.Y += dY;
// PDF ドキュメントを保存します。
doc.Save(stream);
return doc.Pages.Count;
}
}
}