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)