C#設(shè)置或驗(yàn)證PDF文本域格式的方法詳解
概述
PDF中的文本域可以通過(guò)設(shè)置不同格式,用于顯示數(shù)字、貨幣、日期、時(shí)間、郵政編碼、電話號(hào)碼和社保號(hào)等等。Adobe Acrobat提供了許多固定的JavaScripts用來(lái)設(shè)置和驗(yàn)證文本域的格式,如:AFNumber_Format(2, 0, 0, 0, "$", true)和AFNumber_Keystroke(2, 0, 0, 0, "$", true)。Format后綴的script是用來(lái)設(shè)置文本域顯示的格式,而Keystroke后綴的script是用來(lái)驗(yàn)證輸入內(nèi)容。
Spire.PDF for .NET提供了相應(yīng)的方法來(lái)設(shè)置和驗(yàn)證文本域格式。下面的表格羅列了常用的格式和Spire.PDF中對(duì)應(yīng)的方法,可參考使用:

引入dll
1.通過(guò)NuGet安裝dll(2種方法)
1.1 可以在Visual Studio中打開(kāi)“解決方案資源管理器”,鼠標(biāo)右鍵點(diǎn)擊“引用”,“管理NuGet包”,然后搜索“Spire.PDF”,點(diǎn)擊“安裝”。
1.2 將以下內(nèi)容復(fù)制到PM控制臺(tái)安裝。
Install-Package Spire.PDF -Version 7.12.1
2.手動(dòng)添加dll引用
可通過(guò)手動(dòng)下載包,然后解壓,找到BIN文件夾下的Spire.Pdf.dll。在Visual Studio中打開(kāi)“解決方案資源管理器”,鼠標(biāo)右鍵點(diǎn)擊“引用”,“添加引用”將本地路徑BIN文件夾下的dll文件添加引用至程序。
代碼(C#/VB.NET)
C#
using Spire.Pdf;
using Spire.Pdf.Actions;
using Spire.Pdf.Fields;
using System.Drawing;
namespace SetTextFormatInTextboxField
{
class Program
{
static void Main(string[] args)
{
//新建PDF文檔,并添加空白頁(yè)
PdfDocument pdf = new PdfDocument();
PdfPageBase page = pdf.Pages.Add();
//定義坐標(biāo)變量
float X = 10;
float Y = 10;
float width = 100;
float height = 20;
//實(shí)例化一個(gè)文本域?qū)ο?,并設(shè)置它的位置和邊框樣式
PdfTextBoxField textbox = new PdfTextBoxField(page, "Number-TextBox");
textbox.Bounds = new RectangleF(X, Y, width, height);
textbox.BorderWidth = 0.75f;
textbox.BorderStyle = PdfBorderStyle.Solid;
//給文本域的鍵盤(pán)擊鍵事件設(shè)置一個(gè)JavaScript動(dòng)作用于驗(yàn)證輸入內(nèi)容是否符合要求
string js = PdfJavaScript.GetNumberKeystrokeString(2, 0, 0, 0, "$", true);
PdfJavaScriptAction jsAction = new PdfJavaScriptAction(js);
textbox.Actions.KeyPressed = jsAction;
//設(shè)置文本域內(nèi)容顯示為數(shù)字貨幣
js = PdfJavaScript.GetNumberFormatString(2, 0, 0, 0, "$", true);
jsAction = new PdfJavaScriptAction(js);
textbox.Actions.Format = jsAction;
//添加文本域到PDF中,并保存文檔
pdf.Form.Fields.Add(textbox);
//添加文本框,設(shè)置文本內(nèi)容顯示為日期格式
PdfTextBoxField textbox1 = new PdfTextBoxField(page, "DateFormat-TextBox");
textbox1.Bounds = new RectangleF(X+200, Y, width, height);
textbox1.BorderWidth = 0.75f;
textbox1.BorderStyle = PdfBorderStyle.Solid;
string js1 = PdfJavaScript.GetDateKeystrokeString("mm/dd/yyyy");
PdfJavaScriptAction jsAction1 = new PdfJavaScriptAction(js1);
textbox1.Actions.KeyPressed = jsAction1;
js1 = PdfJavaScript.GetDateFormatString("mm/dd/yyyy");
jsAction1 = new PdfJavaScriptAction(js1);
textbox1.Actions.Format = jsAction1;
pdf.Form.Fields.Add(textbox1);
//添加文本框,設(shè)置文本內(nèi)容顯示為郵政編碼格式
PdfTextBoxField textbox2 = new PdfTextBoxField(page, "SpecialFormat0-1-TextBox");
textbox2.Bounds = new RectangleF(X + 400, Y, width, height);
textbox2.BorderWidth = 0.75f;
textbox2.BorderStyle = PdfBorderStyle.Solid;
//string js2 = PdfJavaScript.GetSpecialKeystrokeString(0);
string js2 = PdfJavaScript.GetSpecialKeystrokeString(1);
PdfJavaScriptAction jsAction2 = new PdfJavaScriptAction(js2);
textbox2.Actions.KeyPressed = jsAction2;
//js2 = PdfJavaScript.GetSpecialFormatString(0);
js2 = PdfJavaScript.GetSpecialFormatString(1);
jsAction2 = new PdfJavaScriptAction(js2);
textbox2.Actions.Format = jsAction2;
pdf.Form.Fields.Add(textbox2);
//添加文本框,設(shè)置文本內(nèi)容顯示為百分?jǐn)?shù)
PdfTextBoxField textbox3 = new PdfTextBoxField(page, "SpecialFormat2-TextBox");
textbox3.Bounds = new RectangleF(X, Y+50, width, height);
textbox3.BorderWidth = 0.75f;
textbox3.BorderStyle = PdfBorderStyle.Solid;
string js3 = PdfJavaScript.GetPercentKeystrokeString(1,0);
PdfJavaScriptAction jsAction3 = new PdfJavaScriptAction(js3);
textbox3.Actions.KeyPressed = jsAction3;
js3 = PdfJavaScript.GetPercentFormatString(1, 0);
jsAction3 = new PdfJavaScriptAction(js3);
textbox3.Actions.Format = jsAction3;
pdf.Form.Fields.Add(textbox3);
//添加文本框,設(shè)置數(shù)據(jù)驗(yàn)證
PdfTextBoxField textbox4 = new PdfTextBoxField(page, "RangeValidate-TextBox");
textbox4.Bounds = new RectangleF(X+200, Y + 50, width, height);
textbox4.BorderWidth = 0.75f;
textbox4.BorderStyle = PdfBorderStyle.Solid;
string js4 = PdfJavaScript.GetRangeValidateString(true, -18, true, 18);
PdfJavaScriptAction jsAction4 = new PdfJavaScriptAction(js4);
textbox4.Actions.Format = jsAction4;
pdf.Form.Fields.Add(textbox4);
//保存文檔
pdf.SaveToFile("FormatField.pdf", FileFormat.PDF);
}
}
}VB.NET
Imports Spire.Pdf
Imports Spire.Pdf.Actions
Imports Spire.Pdf.Fields
Imports System.Drawing
Namespace SetTextFormatInTextboxField
Class Program
Private Shared Sub Main(args As String())
'新建PDF文檔,并添加空白頁(yè)
Dim pdf As New PdfDocument()
Dim page As PdfPageBase = pdf.Pages.Add()
'定義坐標(biāo)變量
Dim X As Single = 10
Dim Y As Single = 10
Dim width As Single = 100
Dim height As Single = 20
'實(shí)例化一個(gè)文本域?qū)ο螅⒃O(shè)置它的位置和邊框樣式
Dim textbox As New PdfTextBoxField(page, "Number-TextBox")
textbox.Bounds = New RectangleF(X, Y, width, height)
textbox.BorderWidth = 0.75F
textbox.BorderStyle = PdfBorderStyle.Solid
'給文本域的鍵盤(pán)擊鍵事件設(shè)置一個(gè)JavaScript動(dòng)作用于驗(yàn)證輸入內(nèi)容是否符合要求
Dim js As String = PdfJavaScript.GetNumberKeystrokeString(2, 0, 0, 0, "$", True)
Dim jsAction As New PdfJavaScriptAction(js)
textbox.Actions.KeyPressed = jsAction
'設(shè)置文本域內(nèi)容顯示為數(shù)字貨幣
js = PdfJavaScript.GetNumberFormatString(2, 0, 0, 0, "$", True)
jsAction = New PdfJavaScriptAction(js)
textbox.Actions.Format = jsAction
'添加文本域到PDF中,并保存文檔
pdf.Form.Fields.Add(textbox)
'添加文本框,設(shè)置文本內(nèi)容顯示為日期格式
Dim textbox1 As New PdfTextBoxField(page, "DateFormat-TextBox")
textbox1.Bounds = New RectangleF(X + 200, Y, width, height)
textbox1.BorderWidth = 0.75F
textbox1.BorderStyle = PdfBorderStyle.Solid
Dim js1 As String = PdfJavaScript.GetDateKeystrokeString("mm/dd/yyyy")
Dim jsAction1 As New PdfJavaScriptAction(js1)
textbox1.Actions.KeyPressed = jsAction1
js1 = PdfJavaScript.GetDateFormatString("mm/dd/yyyy")
jsAction1 = New PdfJavaScriptAction(js1)
textbox1.Actions.Format = jsAction1
pdf.Form.Fields.Add(textbox1)
'添加文本框,設(shè)置文本內(nèi)容顯示為郵政編碼格式
Dim textbox2 As New PdfTextBoxField(page, "SpecialFormat0-1-TextBox")
textbox2.Bounds = New RectangleF(X + 400, Y, width, height)
textbox2.BorderWidth = 0.75F
textbox2.BorderStyle = PdfBorderStyle.Solid
'string js2 = PdfJavaScript.GetSpecialKeystrokeString(0);
Dim js2 As String = PdfJavaScript.GetSpecialKeystrokeString(1)
Dim jsAction2 As New PdfJavaScriptAction(js2)
textbox2.Actions.KeyPressed = jsAction2
'js2 = PdfJavaScript.GetSpecialFormatString(0);
js2 = PdfJavaScript.GetSpecialFormatString(1)
jsAction2 = New PdfJavaScriptAction(js2)
textbox2.Actions.Format = jsAction2
pdf.Form.Fields.Add(textbox2)
'添加文本框,設(shè)置文本內(nèi)容顯示為百分?jǐn)?shù)
Dim textbox3 As New PdfTextBoxField(page, "SpecialFormat2-TextBox")
textbox3.Bounds = New RectangleF(X, Y + 50, width, height)
textbox3.BorderWidth = 0.75F
textbox3.BorderStyle = PdfBorderStyle.Solid
Dim js3 As String = PdfJavaScript.GetPercentKeystrokeString(1, 0)
Dim jsAction3 As New PdfJavaScriptAction(js3)
textbox3.Actions.KeyPressed = jsAction3
js3 = PdfJavaScript.GetPercentFormatString(1, 0)
jsAction3 = New PdfJavaScriptAction(js3)
textbox3.Actions.Format = jsAction3
pdf.Form.Fields.Add(textbox3)
'添加文本框,設(shè)置數(shù)據(jù)驗(yàn)證
Dim textbox4 As New PdfTextBoxField(page, "RangeValidate-TextBox")
textbox4.Bounds = New RectangleF(X + 200, Y + 50, width, height)
textbox4.BorderWidth = 0.75F
textbox4.BorderStyle = PdfBorderStyle.Solid
Dim js4 As String = PdfJavaScript.GetRangeValidateString(True, -18, True, 18)
Dim jsAction4 As New PdfJavaScriptAction(js4)
textbox4.Actions.Format = jsAction4
pdf.Form.Fields.Add(textbox4)
'保存文檔
pdf.SaveToFile("FormatField.pdf", FileFormat.PDF)
End Sub
End Class
End Namespace設(shè)置后的文本框域填寫(xiě)效果如圖:

以上就是C#設(shè)置或驗(yàn)證PDF文本域格式的方法詳解的詳細(xì)內(nèi)容,更多關(guān)于C#設(shè)置 驗(yàn)證PDF文本域格式的資料請(qǐng)關(guān)注腳本之家其它相關(guān)文章!
相關(guān)文章
C#實(shí)現(xiàn)TIF圖像轉(zhuǎn)PDF文件的方法
這篇文章主要介紹了C#實(shí)現(xiàn)TIF圖像轉(zhuǎn)PDF文件的方法,涉及C#使用TIFtoPDF工具實(shí)現(xiàn)pdf文件轉(zhuǎn)換的技巧,需要的朋友可以參考下2015-07-07
C# 修改文件的創(chuàng)建、修改和訪問(wèn)時(shí)間的示例
這篇文章主要介紹了C#實(shí)現(xiàn)修改文件的創(chuàng)建、修改和訪問(wèn)時(shí)間的示例,幫助大家更好的理解和學(xué)習(xí)使用c#,感興趣的朋友可以了解下2021-04-04
C#實(shí)現(xiàn)百分比轉(zhuǎn)小數(shù)的方法
這篇文章主要介紹了C#實(shí)現(xiàn)百分比轉(zhuǎn)小數(shù)的方法,涉及C#進(jìn)行數(shù)值計(jì)算的相關(guān)技巧,需要的朋友可以參考下2015-06-06
AjaxControlToolkit AjaxFileUpload 顯示英文改成中文的解決方法
AjaxControlToolkit AjaxFileUpload 顯示英文改成中文的解決方法,需要的朋友可以參考一下2013-03-03
C#使用XSLT實(shí)現(xiàn)xsl、xml與html相互轉(zhuǎn)換
這篇文章介紹了C#使用XSLT實(shí)現(xiàn)xsl、xml與html相互轉(zhuǎn)換的方法,文中通過(guò)示例代碼介紹的非常詳細(xì)。對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下2022-06-06
舉例說(shuō)明Java多線程編程中讀寫(xiě)鎖的使用
這篇文章主要介紹了舉例說(shuō)明Java多線程編程中讀寫(xiě)鎖的使用,文中的例子很好地說(shuō)明了Java的自帶讀寫(xiě)鎖ReentrantReadWriteLock的使用,需要的朋友可以參考下2016-02-02
c#模擬平拋運(yùn)動(dòng)動(dòng)畫(huà)的方法詳解
本篇文章是對(duì)使用c#模擬平拋運(yùn)動(dòng)動(dòng)畫(huà)的方法進(jìn)行了詳細(xì)的分析介紹,需要的朋友參考下2013-06-06

