PDF中的文本域可以设置不同格式,用来显示数字、货币、日期、时间、邮政编码、电话号码和社保号等等。Adobe Acrobat提供了许多固定的JavaScripts用来设置和验证文本域的格式,如:AFNumber_Format(2, 0, 0, 0, "$", true)和AFNumber_Keystroke(2, 0, 0, 0, "$", true)。Format后缀的script是用来设置文本域显示的格式,而Keystroke后缀的script是用来验证输入内容。
Spire.PDF提供了相应的方法来设置和验证文本域格式。下面的表格罗列了常用的格式和Spire.PDF中对应的方法。
描述 | 示例 | JavaScript | 方法 |
日期 |
01/31/2008 | AFDate_FormatEx("mm/dd/yyyy"); AFDate_KeystrokeEx("mm/dd/yyyy"); | GetDateFormatString("mm/dd/yyyy"); GetDateKeystrokeString("mm/dd/yyyy"); |
邮政编码 | 12345 | AFSpecial_Format(0); AFSpecial_Keystroke(0); | GetSpecialFormatString(0); GetSpecialKeystrokeString(0); |
邮政编码+4 | 12345-1234 | AFSpecial_Format(1); AFSpecial_Keystroke(1); | GetSpecialFormatString(1); GetSpecialKeystrokeString(1); |
电话号码 | (123)456-7890 | AFSpecial_Format(2); AFSpecial_Keystroke(2); | GetSpecialFormatString(2); GetSpecialKeystrokeString(2); |
货币 | $12345.00 -$12345.00 | AFNumber_Format(2,0,0,0,"$",true); AFNumber_Keystroke(2,0,0,0,"$",true); | GetNumberFormatString(2,0,0,0,"$",true); GetNumberKeystrokeString(2,0,0,0,"$",true); |
验证 | 1.5≤输入值≤5.5 | AFRange_Validate(true,1.5,true,5.5); | GetRangeValidateString(true,1.5,true,5.5); |
下面的用例是展示如何用C#和VB.NET创建文本框,并以货币格式显示。
C#
//新建PDF文档,并添加空白页
PdfDocument pdf = new PdfDocument();
PdfPageBase page = pdf.Pages.Add();
//实例化一个文本域对象,并设置它的位置和边框样式
PdfTextBoxField textbox = new PdfTextBoxField(page, "Number-TextBox");
textbox.Bounds = new RectangleF(10, 10, 100, 20);
textbox.BorderWidth = 0.75f;
textbox.BorderStyle = PdfBorderStyle.Solid;
//给文本域的键盘击键事件设置一个JavaScript动作用于验证输入内容是否符合要求
string js = PdfJavaScript.GetNumberKeystrokeString(2, 0, 0, 0, "$", true);
PdfJavaScriptAction jsAction = new PdfJavaScriptAction(js);
textbox.Actions.KeyPressed = jsAction;
//设置文本域内容的显示格式
js = PdfJavaScript.GetNumberFormatString(2, 0, 0, 0, "$", true);
jsAction = new PdfJavaScriptAction(js);
textbox.Actions.Format = jsAction;
//添加文本域到PDF中,并保存文档
pdf.Form.Fields.Add(textbox);
pdf.SaveToFile("FormatField.pdf", FileFormat.PDF);
VB.NET
'新建PDF文档,并添加空白页
Dim pdf As New PdfDocument()
Dim page As PdfPageBase = pdf.Pages.Add()
'实例化一个文本域对象,并设置它的位置和边框样式
Dim textbox As New PdfTextBoxField(page, "Number-TextBox")
textbox.Bounds = New RectangleF(10, 10, 100, 20)
textbox.BorderWidth = 0.75F
textbox.BorderStyle = PdfBorderStyle.Solid
'给文本域的键盘击键事件设置一个JavaScript动作用于验证输入内容是否符合要求
Dim js As String = PdfJavaScript.GetNumberKeystrokeString(2, 0, 0, 0, "$", True)
Dim jsAction As New PdfJavaScriptAction(js)
textbox.Actions.KeyPressed = jsAction
'设置文本域内容的显示格式
js = PdfJavaScript.GetNumberFormatString(2, 0, 0, 0, "$", True)
jsAction = New PdfJavaScriptAction(js)
textbox.Actions.Format = jsAction
'添加文本域到PDF中,并保存文档
pdf.Form.Fields.Add(textbox)
pdf.SaveToFile("FormatField.pdf", FileFormat.PDF)