C#設(shè)置PDF表單不可編輯以及提取表單數(shù)據(jù)的操作
PDF表單是PDF中的可編輯區(qū)域,允許用戶填寫指定信息。當(dāng)表單填寫完成后,有時候我們可能需要將其設(shè)置為不可編輯,以保護(hù)表單內(nèi)容的完整性和可靠性。或者需要從PDF表單中提取數(shù)據(jù)以便后續(xù)處理或分析。
之前文章詳細(xì)介紹過如何使用免費(fèi)Spire.PDF庫通過C# 創(chuàng)建、填寫表單,本文將繼續(xù)介紹該免費(fèi).NET PDF庫支持的另外兩種操作PDF表單的功能,即:
- 使用C# 設(shè)置PDF表單不可編輯(PDF扁平化)
- 使用C# 提取PDF表單數(shù)據(jù)
免費(fèi)庫安裝(2種方法):
Free Spire.PDF for .NET 免費(fèi)庫支持兩種安裝方式:
- 通過 NuGet安裝:http://www.nuget.org/packages/FreeSpire.PDF/
- 點(diǎn)擊下載產(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é)
免費(fèi)Spire.PDF支持多種對PDF表單的操作,使用它,我們可以通過C# 輕松實現(xiàn)鎖定PDF表單以確保表單不被篡改或編輯,或者通過C# 快速提取PDF表單數(shù)據(jù)并用于各種用途,如數(shù)據(jù)分析、報告生成等。
以上就是C#設(shè)置PDF表單不可編輯以及提取表單數(shù)據(jù)的操作的詳細(xì)內(nèi)容,更多關(guān)于C#設(shè)置PDF表單不可編輯的資料請關(guān)注腳本之家其它相關(guān)文章!
相關(guān)文章
C#中BitConverter.ToUInt16()和BitConverter.ToString()的簡單使用
這篇文章主要介紹了C#中BitConverter.ToUInt16()和BitConverter.ToString()的簡單使用,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧2020-02-02
將數(shù)組中指定數(shù)量的元素移動數(shù)組后面的實現(xiàn)代碼
本篇文章是對將數(shù)組中指定數(shù)量的元素移動數(shù)組后面的實現(xiàn)代碼進(jìn)行了詳細(xì)的分析介紹,需要的朋友參考下2013-06-06

