SetFieldFormat.cs
//
// このコードは、DioDocs for PDF のサンプルの一部として提供されています。
// © MESCIUS inc. All rights reserved.
//
using System;
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
{
// このサンプルでは、TextField/CombTextField/ComboBoxFieldクラスのヘルパーメソッドである
// SetPercentValue/SetNumberValue/SetDateValue/SetTimeValue/SetSpecialFormatValueメソッドを使用して、
// フィールドの書式または書式化された値を設定する方法を紹介しています。
// なお、フィールドの外観に影響を与えるプロパティを設定すると、
// 上記のメソッドを使用して設定した書式が失われるため、フィールドの外観を調整した後で
// 上記のメソッドを呼び出す必要があることに注意してください。
public class SetFieldFormat
{
public int CreatePDF(Stream stream)
{
var doc = new GcPdfDocument();
var p = doc.NewPage();
var g = p.Graphics;
g.DrawString("パーセントの書式", Common.Util.getFont(), 14, Color.Black, new PointF(10, 10));
AddPercentFormat(p, new RectangleF(10, 40, 60, 20), 0.2f, 2, TextField.NumberSeparatorStyle.Comma);
AddPercentFormat(p, new RectangleF(80, 40, 60, 20), 1, 0, TextField.NumberSeparatorStyle.CommaDot);
AddPercentFormat(p, new RectangleF(150, 40, 60, 20), -0.1f, 3, TextField.NumberSeparatorStyle.DotComma);
AddPercentFormat(p, new RectangleF(220, 40, 60, 20), 2f, 2, TextField.NumberSeparatorStyle.Dot);
AddPercentFormat(p, new RectangleF(290, 40, 60, 20), 0.5f, 2, TextField.NumberSeparatorStyle.ApostropheDot);
g.DrawString("数値の書式", Common.Util.getFont(), 14, Color.Black, new PointF(10, 70));
AddNumberFormat(p, new RectangleF(10, 100, 60, 20), 12345.67f, 2, TextField.NumberSeparatorStyle.Comma,
TextField.NumberNegativeStyle.None, null, TextField.CurrencySymbolStyle.BeforeWithSpace);
AddNumberFormat(p, new RectangleF(80, 100, 60, 20), -12.7f, 0, TextField.NumberSeparatorStyle.CommaDot,
TextField.NumberNegativeStyle.UseRedText, "R", TextField.CurrencySymbolStyle.BeforeWithSpace);
AddNumberFormat(p, new RectangleF(150, 100, 60, 20), 0.123f, 3, TextField.NumberSeparatorStyle.DotComma,
TextField.NumberNegativeStyle.ShowParentheses, "\u20ac", TextField.CurrencySymbolStyle.AfterWithSpace);
AddNumberFormat(p, new RectangleF(220, 100, 60, 20), 12345, 2, TextField.NumberSeparatorStyle.Dot,
TextField.NumberNegativeStyle.ShowParentheses, "TL", TextField.CurrencySymbolStyle.AfterNoSpace);
AddNumberFormat(p, new RectangleF(290, 100, 60, 20), -5674.344f, 2, TextField.NumberSeparatorStyle.ApostropheDot,
TextField.NumberNegativeStyle.ShowParentheses | TextField.NumberNegativeStyle.UseRedText, "TL", TextField.CurrencySymbolStyle.AfterWithSpace);
g.DrawString("日付の書式", Common.Util.getFont(), 14, Color.Black, new PointF(10, 130));
AddDateFormat(p, new RectangleF(10, 160, 60, 20), DateTime.Now, "dd-mm-yyyy");
AddDateFormat(p, new RectangleF(80, 160, 60, 20), DateTime.Now, "yy-m-d");
AddDateFormat(p, new RectangleF(150, 160, 60, 20), DateTime.Now, "yyyy/mm/dd");
g.DrawString("時刻の書式", Common.Util.getFont(), 14, Color.Black, new PointF(10, 200));
var dt = new DateTime(2000, 1, 1, 1, 2, 3);
AddTimeFormat(p, new RectangleF(10, 230, 60, 20), dt, "HH:MM");
AddTimeFormat(p, new RectangleF(80, 230, 60, 20), dt, "h:MM tt");
AddTimeFormat(p, new RectangleF(150, 230, 60, 20), dt, "HH:MM:ss");
g.DrawString("特殊な書式", Common.Util.getFont(), 14, Color.Black, new PointF(10, 270));
AddSpecialFormat(p, new RectangleF(10, 300, 60, 20), "35004", TextField.SpecialFormat.ZipCode);
AddSpecialFormat(p, new RectangleF(80, 300, 60, 20), "84606-6580", TextField.SpecialFormat.ZipCode4);
AddSpecialFormat(p, new RectangleF(150, 300, 60, 20), "(123) 456-7890", TextField.SpecialFormat.Phone);
AddSpecialFormat(p, new RectangleF(220, 300, 60, 20), "123-45-6789", TextField.SpecialFormat.SSN);
// PDF ドキュメントを保存します。
doc.Save(stream);
return doc.Pages.Count;
}
private static TextField AddPercentFormat(Page p,
RectangleF rect,
float v,
int decimalPlaces,
TextField.NumberSeparatorStyle separatorStyle)
{
var result = new TextField();
p.Doc.AcroForm.Fields.Add(result);
result.Widget.Page = p;
result.Widget.Rect = rect;
result.Widget.Border.Width = 1;
result.SetPercentValue(v, decimalPlaces, separatorStyle);
return result;
}
private static TextField AddNumberFormat(Page p,
RectangleF rect,
float v,
int decimalPlaces,
TextField.NumberSeparatorStyle separatorStyle,
TextField.NumberNegativeStyle negativeStyle,
string currencySymbol,
TextField.CurrencySymbolStyle currencySymbolStyle)
{
var result = new TextField();
p.Doc.AcroForm.Fields.Add(result);
result.Widget.Page = p;
result.Widget.Rect = rect;
result.Widget.Border.Width = 1;
result.Widget.Justification = VariableTextJustification.RightJustified;
result.SetNumberValue(v, decimalPlaces, separatorStyle, negativeStyle, currencySymbol, currencySymbolStyle);
return result;
}
private static TextField AddDateFormat(Page p,
RectangleF rect,
DateTime v,
string format)
{
var result = new TextField();
p.Doc.AcroForm.Fields.Add(result);
result.Widget.Page = p;
result.Widget.Rect = rect;
result.Widget.Border.Width = 1;
result.SetDateValue(v, format);
return result;
}
private static TextField AddTimeFormat(Page p,
RectangleF rect,
DateTime v,
string format)
{
var result = new TextField();
p.Doc.AcroForm.Fields.Add(result);
result.Widget.Page = p;
result.Widget.Rect = rect;
result.Widget.Border.Width = 1;
result.SetTimeValue(v, format);
return result;
}
private static TextField AddSpecialFormat(Page p,
RectangleF rect,
string v,
TextField.SpecialFormat format)
{
var result = new TextField();
p.Doc.AcroForm.Fields.Add(result);
result.Widget.Page = p;
result.Widget.Rect = rect;
result.Widget.Border.Width = 1;
result.SetSpecialFormatValue(v, format);
return result;
}
}
}