最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

C# 在PDF中創(chuàng)建和填充域

 更新時間:2017年03月17日 10:48:44   作者:Yesi  
本文主要介紹了C# 在PDF中創(chuàng)建和填充域的相關(guān)知識。具有很好的參考價值,下面跟著小編一起來看下吧

眾所周知,PDF文檔通常是不能編輯和修改的。如果用戶需要在PDF文檔中簽名或者填寫其他內(nèi)容時,就需要PDF文檔中有可編輯的域。開發(fā)者也經(jīng)常會遇到將數(shù)據(jù)以編程的方式填充到PDF模板域的需求。這時候就需要解決以下兩個問題:

  1. 如何在PDF中創(chuàng)建可編輯的域?
  2. 如何將內(nèi)容準(zhǔn)確地填寫到這些域中?

這里我將介紹怎樣使用C#和Free Spire.PDF組件來實現(xiàn)這一功能。

Free Spire.PDF組件概述

Free Spire.PDF是一個免費專業(yè)的PDF組件,用于在.NET應(yīng)用程序中創(chuàng)建,編輯,處理和閱讀PDF文檔。支持豐富的PDF文檔處理操作,如PDF文檔合并/拆分、轉(zhuǎn)換(如HTML轉(zhuǎn)PDF,PDF轉(zhuǎn)圖片等)、打?。òo默打?。嚎s、添加注釋、安全設(shè)置(包括數(shù)字簽名)、創(chuàng)建與填充域、圖片插入與提取、文本提取與高亮等。不依賴Adobe Acrobat,并且支持中文。 

關(guān)于安裝,有很多種渠道,包括官網(wǎng)以及開發(fā)者最喜歡和常用的NuGet方式。在Visual Studio的 NuGet Package Manager Console中輸入以下PowerShell命令回車,組件的dll就會自動地引用到項目中:

PM> Install-Package FreeSpire.PDF

創(chuàng)建和填充域的實現(xiàn)

1.創(chuàng)建域

該組件提供了很多對應(yīng)的類,通過這些類我們可以創(chuàng)建多種PDF域。因為種類比較多,所以下面我只列出了一些常見的域和該域在組件中所對應(yīng)的類名。

域名

類名

文本域

PdfTextBoxField

簽名域

PdfSignatureField

復(fù)選框

PdfCheckBoxField

組合框

PdfComboBoxField

列表框

PdfListBoxField

按鈕

PdfRadioButtonListField(單選按鈕)

PdfButtonField (普通按鈕)

這里我選取PDF文檔中最常見的兩種可編輯域進行介紹:文本域和簽名域。

1.1 文本域

首先,我創(chuàng)建了一個簡單的文本域。在創(chuàng)建的時候需要指定域的名稱,這樣做的好處在于,如果文檔中同時存在多個文本域,當(dāng)我們以編程的方式填寫域的時候,可以根據(jù)域的名稱快速準(zhǔn)確地將內(nèi)容填寫到指定的域中。需要注意的是域名不要重復(fù),否則會將內(nèi)容填寫到該域名對應(yīng)的所有域中。

//創(chuàng)建PDF文檔
PdfDocument pdf = new PdfDocument();
//添加一個新頁面
PdfPageBase page = pdf.Pages.Add(PdfPageSize.A4, new PdfMargins());
//添加文本到頁面
PdfTrueTypeFont font = new PdfTrueTypeFont(new Font("Arial Unicode MS", 10f), true);
page.Canvas.DrawString("年齡:", font, PdfBrushes.DeepSkyBlue, 10, 50);
//創(chuàng)建文本域并指定文本域的名稱
PdfTextBoxField textbox = new PdfTextBoxField(page, "Age");  
//設(shè)置文本域的大小、位置、字體
textbox.Bounds = new RectangleF(40, 50, 50, 12);  
textbox.Font = font;
//添加文本域到文檔
pdf.Form.Fields.Add(textbox);
//保存文檔
pdf.SaveToFile("Fields.pdf");

當(dāng)然多數(shù)時候我們的需求可能不止是創(chuàng)建一個簡單的文本域,還需要做一些其他設(shè)置,如設(shè)置邊框、背景色、字體顏色、字體排列方式。甚至是指定文本域的輸入內(nèi)容,如只能輸入日期或某一范圍內(nèi)的數(shù)字等。

設(shè)置格式:

//設(shè)置邊框
textbox.BorderWidth = 0.75f;
textbox.BorderStyle = PdfBorderStyle.Solid;
textbox.BorderColor = Color.Black;
//設(shè)置背景色
textbox.BackColor = Color.Yellow;
//設(shè)置字體顏色
textbox.ForeColor = Color.Red;
//設(shè)置字體排列方式 
textbox.TextAlignment = PdfTextAlignment.Center;

指定文本域的輸入內(nèi)容:

Adobe Acrobat支持開發(fā)者使用JavaScript來預(yù)先定義文本域輸入內(nèi)容的格式、類型等。該組件也支持這類Script并提供了對應(yīng)的方法來實現(xiàn)這些功能。下表列出了部分JavaScript和方法:

描述

示例

JavaScript

方法

Date

01/31/2008

AFDate_FormatEx("mm/dd/yyyy");
AFDate_KeystrokeEx("mm/dd/yyyy");

GetDateFormatString("mm/dd/yyyy");
GetDateKeystrokeString("mm/dd/yyyy");

Date

1/31/2008

AFDate_FormatEx("m/d/yyyy");
AFDate_KeystrokeEx("m/d/yyyy");

GetDateFormatString("m/d/yyyy");
GetDateKeystrokeString("m/d/yyyy");

Zip code

12345

AFSpecial_Format(0);
AFSpecial_Keystroke(0);

GetSpecialFormatString(0);
GetSpecialKeystrokeString(0);

Zip+4

12345-1234

AFSpecial_Format(1);
AFSpecial_Keystroke(1);

GetSpecialFormatString(1);
GetSpecialKeystrokeString(1);

Phone number

(123) 456-7890

AFSpecial_Format(2);
AFSpecial_Keystroke(2);

GetSpecialFormatString(2);
GetSpecialKeystrokeString(2);

Money

$12,345.00
  -$12,345.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);

Validate

1≤input value≤10

AFRange_Validate(true,1,true,10)

GetRangeValidateString(true,   1, true, 10);

示例:

//指定輸入數(shù)據(jù)在1-100之間
string js = PdfJavaScript.GetRangeValidateString(true, 1, true, 100);
PdfJavaScriptAction jsAction = new PdfJavaScriptAction(js);
textbox.Actions.Validate = jsAction;

1.2 簽名域

創(chuàng)建簽名域與文本域類似,也可以設(shè)置域的邊框、大小、位置等屬性。這里就不再贅述了。

//創(chuàng)建簽名域并指定域名
PdfSignatureField signaturefield = new PdfSignatureField(page, "Signature");
//設(shè)置域的邊框
signaturefield.BorderWidth = 1.0f;
signaturefield.BorderStyle = PdfBorderStyle.Solid;
signaturefield.BorderColor = new PdfRGBColor(System.Drawing.Color.Black);
//設(shè)置高亮模式
signaturefield.HighlightMode = PdfHighlightMode.Outline;
//設(shè)置大小與位置
signaturefield.Bounds = new RectangleF(40, 150, 200, 100);
//將簽名域添加到頁面
pdf.Form.Fields.Add(signaturefield);

2. 填充域

填充域時需要先獲取文檔中所有的域,然后再逐一填充指定域。如果同一類型的域比較多,則可使用域的名稱快速填充。

//加載PDF文檔
PdfDocument pdf = new PdfDocument();
pdf.LoadFromFile("Fields.pdf");
//獲取第一頁
PdfPageBase page = pdf.Pages[0];
//獲取文檔的所有域
PdfFormWidget form = pdf.Form as PdfFormWidget;
//填充第一個文本域
PdfTextBoxFieldWidget textboxField = form.FieldsWidget[0] as PdfTextBoxFieldWidget;
textboxField.Text = "25";
//填充第二個簽名域
PdfSignatureFieldWidget signatureField = form.FieldsWidget[1] as PdfSignatureFieldWidget;
String pfxPath = @"gary.pfx";
PdfCertificate digi = new PdfCertificate(pfxPath, "123456");   
PdfSignature signature = new PdfSignature(pdf, page, digi, "demo", signatureField);
signature.IsTag = true;
signature.DigitalSigner = "Gary";
signature.ConfigGraphicType = ConfiguerGraphicType.TextSignInformation;
//保存文檔
pdf.SaveToFile("Fill.pdf");

由于篇幅有限,以上只介紹了創(chuàng)建和填充域的功能,如果需要詳細了解其他的功能,請查看:https://www.e-iceblue.com/Introduce/free-pdf-component.html#.WMn1g9J4edU。如有任何疑問,歡迎給博主留言,博主會盡最大努力給你答復(fù)!

以上就是本文的全部內(nèi)容,希望本文的內(nèi)容對大家的學(xué)習(xí)或者工作能帶來一定的幫助,同時也希望多多支持腳本之家!

相關(guān)文章

  • 計算字符串和文件MD5值的小例子

    計算字符串和文件MD5值的小例子

    這篇文章介紹了計算字符串和文件MD5值的小例子,有需要的朋友可以參考一下
    2013-09-09
  • C#中OpenCVSharp實現(xiàn)輪廓檢測

    C#中OpenCVSharp實現(xiàn)輪廓檢測

    這篇文章主要介紹了C#中OpenCVSharp實現(xiàn)輪廓檢測,文中通過示例代碼介紹的非常詳細,對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2020-11-11
  • C# 圖片與Base64碼的相互轉(zhuǎn)化問題(代碼詳解)

    C# 圖片與Base64碼的相互轉(zhuǎn)化問題(代碼詳解)

    這篇文章主要介紹了C# 圖片與Base64碼的相互轉(zhuǎn)化的代碼,通過實例代碼給大家介紹的非常詳細,對大家的學(xué)習(xí)或工作具有一定的參考借鑒價值,需要的朋友可以參考下
    2020-03-03
  • Unity實現(xiàn)新手引導(dǎo)鏤空效果

    Unity實現(xiàn)新手引導(dǎo)鏤空效果

    這篇文章主要為大家詳細介紹了Unity實現(xiàn)新手引導(dǎo)的鏤空效果,文中示例代碼介紹的非常詳細,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2020-02-02
  • C# 各種導(dǎo)出的方法總結(jié)

    C# 各種導(dǎo)出的方法總結(jié)

    本篇文章主要介紹了C# 各種導(dǎo)出方法的相關(guān)知識,具有很好的參考價值。下面跟著小編一起來看下吧
    2017-05-05
  • c#使用file.copy實現(xiàn)文件備份示例

    c#使用file.copy實現(xiàn)文件備份示例

    需要把D盤Source文件夾中的所有名稱包含"LTE"的子文件夾Copy到E盤的Backup文件中,實現(xiàn)特定文件夾每天備份,下面使用file.copy實現(xiàn)一下這個功能
    2014-03-03
  • winform實現(xiàn)拖動文件到窗體上的方法

    winform實現(xiàn)拖動文件到窗體上的方法

    這篇文章主要介紹了winform實現(xiàn)拖動文件到窗體上的方法,以實例分析了C#中WinForm操作窗體及文件的相關(guān)技巧,具有一定參考借鑒價值,需要的朋友可以參考下
    2015-09-09
  • C#實現(xiàn)獲取電腦硬件顯卡核心代號信息

    C#實現(xiàn)獲取電腦硬件顯卡核心代號信息

    這篇文章主要為大家詳細介紹了如何利用C#實現(xiàn)獲取電腦硬件顯卡核心代號信息,文中的示例代碼講解詳細,感興趣的小伙伴可以跟隨小編一起學(xué)習(xí)一下
    2024-01-01
  • C#驗證碼問題的快速解決方法

    C#驗證碼問題的快速解決方法

    下面小編就為大家?guī)硪黄狢#驗證碼問題的快速解決方法。小編覺得挺不錯的,現(xiàn)在就分享給大家,也給大家做個參考。一起跟隨小編過來看看吧
    2016-07-07
  • C# WinForm 登錄界面的圖片驗證碼(區(qū)分大小寫+不區(qū)分大小寫)

    C# WinForm 登錄界面的圖片驗證碼(區(qū)分大小寫+不區(qū)分大小寫)

    這篇文章主要介紹了C# WinForm 登錄界面的圖片驗證碼(區(qū)分大小寫+不區(qū)分大小寫),文中通過示例代碼介紹的非常詳細,對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2020-02-02

最新評論

石城县| 都兰县| 连平县| 湛江市| 洛阳市| 永年县| 宁波市| 来凤县| 南木林县| 鹿邑县| 大洼县| 叙永县| 堆龙德庆县| 耿马| 金湖县| 涪陵区| 民丰县| 天祝| 天镇县| 乐至县| 叶城县| 斗六市| 黑山县| 天台县| 湖北省| 罗田县| 海阳市| 翁源县| 汝阳县| 金溪县| 马山县| 云霄县| 长泰县| 五台县| 台南市| 花莲市| 丰都县| 安远县| 库车县| 南岸区| 星子县|