PDFフォームのテキストフィールドに書式を設定する

今回は「DioDocs for PDF(ディオドック)」の機能で、PDFフォームのフィールドに書式を設定する方法を紹介します。こちらの機能は、2023年9月28日(水)にリリースされた「DioDocs V6J SP2」で追加された機能です。

DioDocs for PDFでは、パーセンテージ、数値、日付、時刻、およびその他の特別な書式をフォームフィールドに設定するメソッドが用意されています。

  • SetPercentFormat:パーセント形式の書式を設定
  • SetNumberFormat:数字形式の書式を設定
  • SetDateFormat:日付形式の書式を設定
  • SetTimeFormat:時間形式の書式を設定
  • SetSpecialFormat:特別な形式の書式(電話番号や郵便番号など)を設定

また、フォームフィールドに書式とともに値を設定するメソッドも用意されています。

  • SetPercentValue:パーセント形式の書式と値を設定
  • SetNumberValue:数字形式の書式と値を設定
  • SetDateValue:日付形式の書式と値を設定
  • SetTimeValue:時間形式の書式と値を設定
  • SetSpecialFormatValue:特別な形式の書式(電話番号や郵便番号など)と値を設定

パーセントの書式を設定する

以下のコードでは、SetPercentFormatメソッドを使用して、テキストフィールドに小数点以下の桁数「2」と小数点区切りのスタイル「TextField.NumberSeparatorStyle.Dot」を設定しています。SetPercentValueメソッドを使用する場合は、テキストフィールドに設定する値「1.5」も設定しています。

// GcPdfDocument を初期化
GcPdfDocument doc = new GcPdfDocument();
// ドキュメントに空白ページを追加
var p = doc.NewPage();
// GcPdfGraphics を初期化
var g = p.Graphics;
// パーセントの書式を描画
g.DrawString("パーセントの書式", StandardFonts.Helvetica, 14, Color.Black, new Point(10, 10));

// TextFieldにパーセント書式を設定
TextField percentformat = new();
p.Doc.AcroForm.Fields.Add(percentformat);

percentformat.Widget.Page = p;
percentformat.Widget.Rect = new RectangleF(10, 40, 60, 20);
percentformat.Widget.Border.Width = 1;
percentformat.SetPercentFormat(2, TextField.NumberSeparatorStyle.Dot);

// TextFieldにパーセント書式の値を設定
TextField percentformatvalue = new();
p.Doc.AcroForm.Fields.Add(percentformatvalue);

percentformatvalue.Widget.Page = p;
percentformatvalue.Widget.Rect = new RectangleF(80, 40, 60, 20);
percentformatvalue.Widget.Border.Width = 1;
percentformatvalue.SetPercentValue(1.5, 2, TextField.NumberSeparatorStyle.Dot);

左側のフィールドは書式の設定のみなので初期状態では空白ですが、値「1」を入力すると設定した書式が適用された値「100.00%」が表示されます。

パーセントの書式を設定する
パーセントの書式を設定する

数値の書式を設定する

以下のコードでは、SetNumberFormatメソッドを使用して、テキストフィールドに小数点以下の桁数「2」と小数点と桁区切りのスタイル「TextField.NumberSeparatorStyle.CommaDot」を設定しています。また、負の値を表示するスタイル「TextField.NumberNegativeStyle.ShowParentheses」と通貨記号として円記号「\u00a5」、記号の表示を数字の前にする「TextField.CurrencySymbolStyle.BeforeNoSpace」も設定しています。

SetPercentValueメソッドを使用する場合は、テキストフィールドに設定する値「12345」も設定しています。

// TextField の数値書式を設定
TextField numberformat = new TextField();
p.Doc.AcroForm.Fields.Add(numberformat);

numberformat.Widget.Page = p;
numberformat.Widget.Rect = new RectangleF(10, 100, 60, 20);
numberformat.Widget.Border.Width = 1;
numberformat.SetNumberFormat(2, TextField.NumberSeparatorStyle.CommaDot,
    TextField.NumberNegativeStyle.UseRedText, "\u00a5", TextField.CurrencySymbolStyle.BeforeNoSpace);

// TextField の数値書式の値を設定
TextField numberformatvalue = new TextField();
p.Doc.AcroForm.Fields.Add(numberformatvalue);

numberformatvalue.Widget.Page = p;
numberformatvalue.Widget.Rect = new RectangleF(80, 100, 60, 20);
numberformatvalue.Widget.Border.Width = 1;
numberformatvalue.SetNumberValue(12345, 2, TextField.NumberSeparatorStyle.CommaDot,
    TextField.NumberNegativeStyle.ShowParentheses, "\u00a5", TextField.CurrencySymbolStyle.BeforeNoSpace);

左側のフィールドは書式の設定のみなので初期状態では空白ですが、値「98765」を入力すると設定した書式が適用された値「(\98,765.00)」が表示されます。

数値の書式を設定する

日付の書式を設定する

以下のコードでは、SetDateFormatメソッドを使用して、テキストフィールドに日付の書式「yyyy-mm-dd」を設定しています。SetDateValueメソッドを使用する場合は、テキストフィールドに設定する値「DateTime.Now」も設定しています。

// TextField に日付書式を設定
TextField dateformat = new TextField();
p.Doc.AcroForm.Fields.Add(dateformat);

dateformat.Widget.Page = p;
dateformat.Widget.Rect = new RectangleF(10, 160, 60, 20);
dateformat.Widget.Border.Width = 1;
dateformat.SetDateFormat("yyyy-mm-dd");

// TextFieldに日付書式の値を設定
TextField dateformatvalue = new TextField();
p.Doc.AcroForm.Fields.Add(dateformatvalue);

dateformatvalue.Widget.Page = p;
dateformatvalue.Widget.Rect = new RectangleF(80, 160, 60, 20);
dateformatvalue.Widget.Border.Width = 1;
dateformatvalue.SetDateValue(DateTime.Now, "yyyy/mm/dd");

左側のフィールドは書式の設定のみなので初期状態では空白ですが、値を入力すると設定した書式が適用された値「2024-01-09」が表示されます。

日付の書式を設定する

時刻の書式を設定する

以下のコードでは、SetTimeFormatメソッドを使用して、テキストフィールドに日付の書式「HH:MM」を設定しています。SetTimeValueメソッドを使用する場合は、テキストフィールドに設定する値「DateTime.Now」も設定しています。

// TextField に時刻書式を設定
TextField timeformat = new TextField();
p.Doc.AcroForm.Fields.Add(timeformat);

timeformat.Widget.Page = p;
timeformat.Widget.Rect = new RectangleF(10, 230, 60, 20);
timeformat.Widget.Border.Width = 1;
timeformat.SetTimeFormat("HH:MM");

// TextFieldに時刻書式の値を設定
TextField timeformatvalue = new TextField();
p.Doc.AcroForm.Fields.Add(timeformatvalue);

timeformatvalue.Widget.Page = p;
timeformatvalue.Widget.Rect = new RectangleF(80, 230, 60, 20);
timeformatvalue.Widget.Border.Width = 1;
timeformatvalue.SetTimeValue(DateTime.Now, "HH:MM:ss");

左側のフィールドは書式の設定のみなので初期状態では空白ですが、値を入力すると設定した書式が適用された値「12:00」が表示されます。

時刻の書式を設定する

上記コードを実装しているサンプルはこちらです。

さいごに

弊社Webサイトでは、製品の機能を気軽に試せるデモアプリケーションやトライアル版も公開していますので、こちらもご確認いただければと思います。

また、ご導入前の製品に関するご相談やご導入後の各種サービスに関するご質問など、お気軽にお問合せください。

\  この記事をシェアする  /