C#設(shè)置PDF表單不可編輯以及提取表單數(shù)據(jù)的操作
PDF表單是PDF中的可編輯區(qū)域,允許用戶填寫指定信息。當(dāng)表單填寫完成后,有時(shí)候我們可能需要將其設(shè)置為不可編輯,以保護(hù)表單內(nèi)容的完整性和可靠性?;蛘咝枰獜腜DF表單中提取數(shù)據(jù)以便后續(xù)處理或分析。
之前文章詳細(xì)介紹過(guò)如何使用免費(fèi)Spire.PDF庫(kù)通過(guò)C# 創(chuàng)建、填寫表單,本文將繼續(xù)介紹該免費(fèi).NET PDF庫(kù)支持的另外兩種操作PDF表單的功能,即:
- 使用C# 設(shè)置PDF表單不可編輯(PDF扁平化)
- 使用C# 提取PDF表單數(shù)據(jù)
免費(fèi)庫(kù)安裝(2種方法):
Free Spire.PDF for .NET 免費(fèi)庫(kù)支持兩種安裝方式:
- 通過(guò) NuGet安裝:http://www.nuget.org/packages/FreeSpire.PDF/
- 點(diǎn)擊下載產(chǎn)品包,解壓縮后手動(dòng)引用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中, 我們可以通過(guò)將其提供的 PdfDocument.Form.IsFlatten 屬性設(shè)置為 "true" 來(lái)鎖定PDF表單不可編輯。
簡(jiǎn)單代碼示例:
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文件中的所有表單,如果僅需鎖定某個(gè)指定的表單域,可以參考如下代碼片段:
//獲取PDF表單
PdfFormWidget formWidget = (PdfFormWidget)pdf.Form;
//通過(guò)表單名獲取指定表單域
PdfField form = formWidget.FieldsWidget["姓名"];
//通過(guò)索引獲取指定表單域
PdfField form = formWidget.FieldsWidget.List[0] as PdfField;
//設(shè)置表單不可編輯
form.Flatten = true;使用C# 提取PDF表單數(shù)據(jù)
在Free Spire.PDF中,每種表單域都提供了對(duì)應(yīng)的類。要實(shí)現(xiàn)PDF表單數(shù)據(jù)的提取,我們需要先確定表單域的類型,然后再使用相應(yīng)類下的屬性來(lái)提取它們的值。
完整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對(duì)象
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");
}
//獲取列表框的名稱、項(xiàng)目和選定項(xiàng)
if (field is PdfListBoxWidgetFieldWidget)
{
PdfListBoxWidgetFieldWidget listBoxField = field as PdfListBoxWidgetFieldWidget;
string name = listBoxField.Name;
sb.Append("列表框名稱: " + name + "\r\n");
sb.Append("列表框項(xiàng)目: \r\n");
PdfListWidgetItemCollection items = listBoxField.Values;
foreach (PdfListWidgetItem item in items)
{
sb.Append(item.Value + "\r\n");
}
string selectedValue = listBoxField.SelectedValue;
sb.Append("列表框選定項(xiàng): " + selectedValue + "\r\n");
}
//獲取組合框字段的名稱、項(xiàng)目和選定項(xiàng)
if (field is PdfComboBoxWidgetFieldWidget)
{
PdfComboBoxWidgetFieldWidget comBoxField = field as PdfComboBoxWidgetFieldWidget;
string name = comBoxField.Name;
sb.Append("組合框名稱: " + name + "\r\n");
sb.Append("組合框項(xiàng)目: \r\n");
PdfListWidgetItemCollection items = comBoxField.Values;
foreach (PdfListWidgetItem item in items)
{
sb.Append(item.Value + "\r\n");
}
string selectedValue = comBoxField.SelectedValue;
sb.Append("組合框選定項(xiàng): " + selectedValue + "\r\n");
}
//獲取單選按鈕的名稱和所選項(xiàng)
if (field is PdfRadioButtonListFieldWidget)
{
PdfRadioButtonListFieldWidget radioBtnField = field as PdfRadioButtonListFieldWidget;
string name = radioBtnField.Name;
sb.Append("單選按鈕名稱: " + name + "\r\n");
string selectedValue = radioBtnField.SelectedValue;
sb.Append("單選按鈕選定項(xiàng): " + 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支持多種對(duì)PDF表單的操作,使用它,我們可以通過(guò)C# 輕松實(shí)現(xiàn)鎖定PDF表單以確保表單不被篡改或編輯,或者通過(guò)C# 快速提取PDF表單數(shù)據(jù)并用于各種用途,如數(shù)據(jù)分析、報(bào)告生成等。
以上就是C#設(shè)置PDF表單不可編輯以及提取表單數(shù)據(jù)的操作的詳細(xì)內(nèi)容,更多關(guān)于C#設(shè)置PDF表單不可編輯的資料請(qǐng)關(guān)注腳本之家其它相關(guān)文章!
相關(guān)文章
3種方法實(shí)現(xiàn)WindowsForm切換窗口
這篇文章主要介紹了3種方法實(shí)現(xiàn)WindowsForm切換窗口,文中講解非常詳細(xì),示例代碼幫助大家更好的理解和學(xué)習(xí),感興趣的朋友可以了解下2020-07-07
WPF實(shí)現(xiàn)動(dòng)畫效果(一)之基本概念
這篇文章介紹了WPF實(shí)現(xiàn)動(dòng)畫效果之基本概念,對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧2022-06-06
C#實(shí)現(xiàn)winform窗口抖動(dòng)效果的示例代碼
在WinForms應(yīng)用程序中,實(shí)現(xiàn)窗口抖動(dòng)效果可以為用戶界面增添一些趣味性和互動(dòng)性,想象一下,當(dāng)你點(diǎn)擊一個(gè)按鈕時(shí),窗口會(huì)輕微地“顫抖”幾下,就像它在對(duì)你表示不滿或提醒你注意某些事情,這個(gè)效果可以通過(guò)定時(shí)改變窗口的位置來(lái)實(shí)現(xiàn),需要的朋友可以參考下2024-12-12
C#中public變量不能被unity面板識(shí)別的解決方案
這篇文章主要介紹了C#中public變量不能被unity面板識(shí)別的解決方案,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧2021-04-04

