C#設(shè)置PDF表單不可編輯以及提取表單數(shù)據(jù)的操作
PDF表單是PDF中的可編輯區(qū)域,允許用戶填寫指定信息。當(dāng)表單填寫完成后,有時候我們可能需要將其設(shè)置為不可編輯,以保護表單內(nèi)容的完整性和可靠性?;蛘咝枰獜腜DF表單中提取數(shù)據(jù)以便后續(xù)處理或分析。
之前文章詳細介紹過如何使用免費Spire.PDF庫通過C# 創(chuàng)建、填寫表單,本文將繼續(xù)介紹該免費.NET PDF庫支持的另外兩種操作PDF表單的功能,即:
- 使用C# 設(shè)置PDF表單不可編輯(PDF扁平化)
- 使用C# 提取PDF表單數(shù)據(jù)
免費庫安裝(2種方法):
Free Spire.PDF for .NET 免費庫支持兩種安裝方式:
- 通過 NuGet安裝:http://www.nuget.org/packages/FreeSpire.PDF/
- 點擊下載產(chǎn)品包,解壓縮后手動引用dll
https://www.e-iceblue.com/Download/download-pdf-for-net-free.html
使用C# 設(shè)置PDF表單不可編輯(PDF扁平化)
PDF 表單如文本框、復(fù)選框、組合框等都是可編輯或可更改狀態(tài),如何想要鎖定這些區(qū)域,我們需要將PDF表單設(shè)置為不可編輯狀態(tài),即PDF扁平化。在Free Spire.PDF中, 我們可以通過將其提供的 PdfDocument.Form.IsFlatten 屬性設(shè)置為 "true" 來鎖定PDF表單不可編輯。
簡單代碼示例:
using Spire.Pdf; namespace FlattenAllFormFields { class Program { static void Main(string[] args) { //加載PDF文件 PdfDocument pdf = new PdfDocument(); pdf.LoadFromFile("PDF表單.pdf"); //設(shè)置所有表單不可編輯 pdf.Form.IsFlatten = true; //保存生成文件 pdf.SaveToFile("扁平PDF.pdf"); } } }
以上示例一鍵鎖定了PDF文件中的所有表單,如果僅需鎖定某個指定的表單域,可以參考如下代碼片段:
//獲取PDF表單 PdfFormWidget formWidget = (PdfFormWidget)pdf.Form; //通過表單名獲取指定表單域 PdfField form = formWidget.FieldsWidget["姓名"]; //通過索引獲取指定表單域 PdfField form = formWidget.FieldsWidget.List[0] as PdfField; //設(shè)置表單不可編輯 form.Flatten = true;
使用C# 提取PDF表單數(shù)據(jù)
在Free Spire.PDF中,每種表單域都提供了對應(yīng)的類。要實現(xiàn)PDF表單數(shù)據(jù)的提取,我們需要先確定表單域的類型,然后再使用相應(yīng)類下的屬性來提取它們的值。
完整C#示例代碼:
using Spire.Pdf; using Spire.Pdf.Fields; using Spire.Pdf.Widget; using System.IO; using System.Text; namespace ExtractFormFieldValues { internal class Program { static void Main(string[] args) { //加載PDF文件 PdfDocument doc = new PdfDocument(); doc.LoadFromFile("PDF表單.pdf"); //創(chuàng)建StringBuilder對象 StringBuilder sb = new StringBuilder(); //獲取PDF表單 PdfFormWidget formWidget = doc.Form as PdfFormWidget; //遍歷表單 for (int i = 0; i < formWidget.FieldsWidget.List.Count; i++) { PdfField field = formWidget.FieldsWidget.List[i] as PdfField; //獲取文本框的名稱和值 if (field is PdfTextBoxFieldWidget) { PdfTextBoxFieldWidget textBoxField = field as PdfTextBoxFieldWidget; string name = textBoxField.Name; string value = textBoxField.Text; sb.Append("文本框名稱: " + name + "\r\n"); sb.Append("文本框內(nèi)容: " + value + "\r\n"); } //獲取列表框的名稱、項目和選定項 if (field is PdfListBoxWidgetFieldWidget) { PdfListBoxWidgetFieldWidget listBoxField = field as PdfListBoxWidgetFieldWidget; string name = listBoxField.Name; sb.Append("列表框名稱: " + name + "\r\n"); sb.Append("列表框項目: \r\n"); PdfListWidgetItemCollection items = listBoxField.Values; foreach (PdfListWidgetItem item in items) { sb.Append(item.Value + "\r\n"); } string selectedValue = listBoxField.SelectedValue; sb.Append("列表框選定項: " + selectedValue + "\r\n"); } //獲取組合框字段的名稱、項目和選定項 if (field is PdfComboBoxWidgetFieldWidget) { PdfComboBoxWidgetFieldWidget comBoxField = field as PdfComboBoxWidgetFieldWidget; string name = comBoxField.Name; sb.Append("組合框名稱: " + name + "\r\n"); sb.Append("組合框項目: \r\n"); PdfListWidgetItemCollection items = comBoxField.Values; foreach (PdfListWidgetItem item in items) { sb.Append(item.Value + "\r\n"); } string selectedValue = comBoxField.SelectedValue; sb.Append("組合框選定項: " + selectedValue + "\r\n"); } //獲取單選按鈕的名稱和所選項 if (field is PdfRadioButtonListFieldWidget) { PdfRadioButtonListFieldWidget radioBtnField = field as PdfRadioButtonListFieldWidget; string name = radioBtnField.Name; sb.Append("單選按鈕名稱: " + name + "\r\n"); string selectedValue = radioBtnField.SelectedValue; sb.Append("單選按鈕選定項: " + selectedValue + "\r\n"); } //獲取復(fù)選框的名稱和狀態(tài) if (field is PdfCheckBoxWidgetFieldWidget) { PdfCheckBoxWidgetFieldWidget checkBoxField = field as PdfCheckBoxWidgetFieldWidget; string name = checkBoxField.Name; sb.Append("復(fù)選框名稱: " + name + "\r\n"); bool status = checkBoxField.Checked; if (status) { sb.Append("復(fù)選框狀態(tài): 已選中 \r\n"); } else { sb.Append("復(fù)選框狀態(tài): 未選中 \r\n"); } } sb.Append("\n"); } //將提取的數(shù)據(jù)寫入txt文件 File.WriteAllText("提取PDF表單.txt", sb.ToString()); doc.Dispose(); } } }
提取PDF表單數(shù)據(jù)的效果圖:
總結(jié)
免費Spire.PDF支持多種對PDF表單的操作,使用它,我們可以通過C# 輕松實現(xiàn)鎖定PDF表單以確保表單不被篡改或編輯,或者通過C# 快速提取PDF表單數(shù)據(jù)并用于各種用途,如數(shù)據(jù)分析、報告生成等。
以上就是C#設(shè)置PDF表單不可編輯以及提取表單數(shù)據(jù)的操作的詳細內(nèi)容,更多關(guān)于C#設(shè)置PDF表單不可編輯的資料請關(guān)注腳本之家其它相關(guān)文章!
相關(guān)文章
C#中BitConverter.ToUInt16()和BitConverter.ToString()的簡單使用
這篇文章主要介紹了C#中BitConverter.ToUInt16()和BitConverter.ToString()的簡單使用,文中通過示例代碼介紹的非常詳細,對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧2020-02-02將數(shù)組中指定數(shù)量的元素移動數(shù)組后面的實現(xiàn)代碼
本篇文章是對將數(shù)組中指定數(shù)量的元素移動數(shù)組后面的實現(xiàn)代碼進行了詳細的分析介紹,需要的朋友參考下2013-06-06