SetFieldFormat.cs
// 完毕:
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
{
// This example shows how to use the helper methods SetPercentValue, SetNumberValue,
// SetDateValue, SetTimeValue, SetSpecialFormatValue on TextField, CombTextField and ComboBoxField
// to set the fields' format/formatted values.
// Note that setting any property affecting the appearance of a field causes any formatting
// set using these methods to be lost, so these methods should be called after any adjustments
// to the field's appearance are done.
public class SetFieldFormat
{
public int CreatePDF(Stream stream)
{
var doc = new GcPdfDocument();
var p = doc.NewPage();
var g = p.Graphics;
g.DrawString("SetPercentFormat", StandardFonts.Helvetica, 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("SetNumberFormat", StandardFonts.Helvetica, 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("SetDateFormat", StandardFonts.Helvetica, 14, Color.Black, new PointF(10, 130));
AddDateFormat(p, new RectangleF(10, 160, 60, 20), Common.Util.TimeNow(), "dd-mm-yyyy");
AddDateFormat(p, new RectangleF(80, 160, 60, 20), Common.Util.TimeNow(), "d-m-yy");
AddDateFormat(p, new RectangleF(150, 160, 60, 20), Common.Util.TimeNow(), "yyyy/mmmm/dd");
g.DrawString("SetTimeFormat", StandardFonts.Helvetica, 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("Special Format", StandardFonts.Helvetica, 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);
// 完毕:
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;
}
}
}