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

C#提取PDF表單數(shù)據(jù)的實現(xiàn)流程

 更新時間:2025年01月28日 15:59:51   作者:nuclear2011  
PDF表單是一種常見的數(shù)據(jù)收集工具,廣泛應用于調查問卷、業(yè)務合同等場景,憑借出色的跨平臺兼容性和標準化特點,PDF表單在各行各業(yè)中得到了廣泛應用,本文將探討如何使用C# 實現(xiàn)自動化PDF表單數(shù)據(jù)提取流程,需要的朋友可以參考下

引言

PDF表單是一種常見的數(shù)據(jù)收集工具,廣泛應用于調查問卷、業(yè)務合同等場景。憑借出色的跨平臺兼容性和標準化特點,PDF表單在各行各業(yè)中得到了廣泛應用。然而,當需要整合、分析或導入大量已填寫的表單數(shù)據(jù)時,傳統(tǒng)的手動處理方式不僅耗時,而且容易出錯。因此,掌握自動提取PDF表單數(shù)據(jù)的方法,不僅能大幅提高工作效率,還能確保數(shù)據(jù)處理的準確性。本文將探討如何使用C# 實現(xiàn)自動化PDF表單數(shù)據(jù)提取流程。

  • 使用工具
  • C# 提取多個PDF表單域的數(shù)據(jù)
  • C# 提取特定PDF表單域的數(shù)據(jù)

使用工具

要使用C# 提取PDF表單的數(shù)據(jù),需要用到合適的PDF文檔處理庫。本文所使用的是Spire.PDF for .NET庫。該庫主要用于在 .NET 應用程序中創(chuàng)建、讀取、編輯、轉換 和打印PDF 文檔。

安裝 Spire.PDF for .NET

你可以在 NuGet 包管理器中運行以下命令安裝 Spire.PDF for .NET:

PM> Install-Package Spire.PDF

如果你已經(jīng)安裝了該庫并希望升級到最新版本,可以使用以下命令:

PM> Update-Package Spire.PDF

C# 提取多個PDF表單域的數(shù)據(jù)

PDF 表單可能包含多種類型的域,例如文本框、列表框、下拉框、單選按鈕和復選框。每種域類型需要采用不同的方法來提取其數(shù)據(jù)。以下是提取這些類型的域的數(shù)據(jù)時所使用的關鍵屬性:

  • 文本框(Text Boxes
    通過 PdfTextBoxFieldWidget 對象的 Name 和 Text 屬性,獲取文本框的名稱及其對應的值。
  • 列表框(List Boxes
    通過 PdfListBoxFieldWidget 對象的 Name、Values 和 SelectedValue 屬性,提取列表框的名稱、所有選項及選定的選項。
  • 下拉框(Combo Boxes
    通過 PdfComboBoxFieldWidget 對象的 Name、Values 和 SelectedValue 屬性,獲取下拉框的名稱、所有選項及選定的選項。
  • 單選按鈕(Radio Buttons
    通過 PdfRadioButtonListFieldWidget 對象的 Name 和 SelectedValue 屬性,獲取單選按鈕的名稱和選定的值。
  • 復選框(Checkboxes
    通過 PdfCheckBoxFieldWidget 對象的 Name 和 Checked 屬性,提取復選框的名稱及其狀態(tài)(是否被選中)。

以下代碼展示了如何使用 C# 從多個 PDF 表單域中提取數(shù)據(jù):

using Spire.Pdf;
using Spire.Pdf.Fields;
using Spire.Pdf.Widget;
using System.Collections.Generic;
using System.IO;
 
namespace ExtractPdfFormData
{
    internal class Program
    {
        static void Main(string[] args)
        {
            // 初始化 PdfDocument 類實例,用于加載和處理 PDF 文件
            using (PdfDocument doc = new PdfDocument())
            {
                // 加載包含表單域的 PDF 文件
                doc.LoadFromFile("表單.pdf");
 
                // 創(chuàng)建列表存儲提取的域名稱及其值
                List<string> content = new List<string>();
 
                // 獲取 PDF 文檔的表單對象
                PdfFormWidget formWidget = doc.Form as PdfFormWidget;
 
                // 檢查表單對象中是否包含表單域
                if (formWidget?.FieldsWidget.Count > 0)
                {
                    // 遍歷文檔中的所有表單域
                    for (int i = 0; i < formWidget.FieldsWidget.List.Count; i++)
                    {
                        // 獲取當前表單域
                        PdfField field = formWidget.FieldsWidget[i];
 
                        // 如果當前表單域為空,跳過該域
                        if (field == null) continue;
 
                        // 提取當前表單域的內容(名稱和值)
                        List<string> currentFieldContent = ExtractFieldContent(field);
 
                        // 如果提取到域內容,則將其添加到 content 列表中
                        if (currentFieldContent.Count > 0)
                        {
                            content.AddRange(currentFieldContent);
 
                            // 如果不是最后一個表單域,添加一個空行用于分隔不同域的內容
                            if (i < formWidget.FieldsWidget.List.Count - 1)
                            {
                                content.Add(""); // 添加空行分隔不同域的內容
                            }
                        }
                    }
                }
 
                // 將提取的內容逐行寫入文本文件
                File.WriteAllLines("提取域數(shù)據(jù).txt", content);
            }
        }
 
        /// <summary>
        /// 提取單個 PDF 表單域的內容(域名和域值)
        /// 根據(jù)不同的表單域類型(文本框、列表框、下拉框、單選按鈕、復選框)提取相應的值
        /// </summary>
        /// <param name="field">當前的 PDF 表單域對象</param>
        /// <returns>包含域內容的字符串列表</returns>
        private static List<string> ExtractFieldContent(PdfField field)
        {
            // 初始化列表來存儲當前表單域的內容
            List<string> fieldContent = new List<string>();
 
            // 檢查該域是否為文本框
            if (field is PdfTextBoxFieldWidget textBoxField)
            {
                fieldContent.Add($"文本框名稱:{textBoxField.Name}");
                fieldContent.Add($"文本框值:{textBoxField.Text}");
            }
            // 檢查該域是否為列表框
            else if (field is PdfListBoxWidgetFieldWidget listBoxField)
            {
                fieldContent.Add($"列表框名稱:{listBoxField.Name}");
                fieldContent.Add("列表框選項:");
                // 遍歷并提取列表框中的所有選項
                foreach (PdfListWidgetItem item in listBoxField.Values)
                {
                    fieldContent.Add($"{item.Value}");
                }
                fieldContent.Add($"列表框選中項:{listBoxField.SelectedValue}");
            }
            // 檢查該域是否為下拉框
            else if (field is PdfComboBoxWidgetFieldWidget comboBoxField)
            {
                fieldContent.Add($"下拉框名稱:{comboBoxField.Name}");
                fieldContent.Add("下拉框選項:");
                // 遍歷并提取下拉框中的所有選項
                foreach (PdfListWidgetItem item in comboBoxField.Values)
                {
                    fieldContent.Add($"{item.Value}");
                }
                fieldContent.Add($"下拉框選中項:{comboBoxField.SelectedValue}");
            }
            // 檢查該域是否為單選按鈕
            else if (field is PdfRadioButtonListFieldWidget radioBtnField)
            {
                fieldContent.Add($"單選按鈕名稱:{radioBtnField.Name}");
                fieldContent.Add($"單選按鈕選中項:{radioBtnField.SelectedValue}");
            }
            // 檢查該域是否為復選框
            else if (field is PdfCheckBoxWidgetFieldWidget checkBoxField)
            {
                fieldContent.Add($"復選框名稱:{checkBoxField.Name}");
                fieldContent.Add($"復選框狀態(tài):{(checkBoxField.Checked ? "選中" : "未選中")}");
            }
 
            // 返回當前表單域的內容
            return fieldContent;
        }
    }
}

C# 提取特定PDF表單域的數(shù)據(jù)

如果你需要從特定的表單域中提取數(shù)據(jù),可以通過該表單域的名稱直接訪問它,然后通過判斷其類型對應地獲取其內容。

以下代碼展示了如何使用C# 從名為 “國家” 的PDF表單域中提取數(shù)據(jù):

using Spire.Pdf;
using Spire.Pdf.Fields;
using Spire.Pdf.Widget;
using System.Collections.Generic;
using System.IO;
 
namespace ExtractSpecificFormData
{
    internal class Program
    {
        static void Main(string[] args)
        {
            // 初始化 PdfDocument 類實例,用于加載和處理 PDF 文件
            using (PdfDocument doc = new PdfDocument())
            {
                // 加載包含表單域的 PDF 文件
                doc.LoadFromFile("表單.pdf");
 
                // 創(chuàng)建列表來存儲提取的表單域名稱及其值
                List<string> content = new List<string>();
 
                // 獲取 PDF 文檔的表單對象
                PdfFormWidget formWidget = doc.Form as PdfFormWidget;
 
                // 指定域名稱
                string fieldName = "國家";
 
                // 檢查表單對象中是否包含表單域
                if (formWidget?.FieldsWidget.Count > 0)
                {
                    // 通過名稱訪問特定表單域
                    PdfField specificField = formWidget.FieldsWidget[fieldName];
 
                    // 確保域存在再進行處理
                    if (specificField != null)
                    {
                        // 提取特定表單域的內容(名稱和值)
                        List<string> specificFieldContent = ExtractFieldContent(specificField);
 
                        // 如果提取到內容,則將其添加到 content 列表中
                        if (specificFieldContent.Count > 0)
                        {
                            content.AddRange(specificFieldContent);
                        }
                    }
                    else
                    {
                        content.Add($"未找到域 '{fieldName}'");
                    }
                }
                else
                {
                    content.Add("PDF 表單中未找到任何域");
                }
 
                // 將提取的內容逐行寫入文本文件
                File.WriteAllLines("提取特定域數(shù)據(jù).txt", content);
            }
        }
 
        /// <summary>
        /// 提取單個 PDF 表單域的內容(名稱和值)
        /// 處理不同類型的表單域,如文本框、列表框、下拉框、單選按鈕和復選框
        /// </summary>
        /// <param name="field">當前 PDF 表單域對象</param>
        /// <returns>包含表單域內容的字符串列表</returns>
        private static List<string> ExtractFieldContent(PdfField field)
        {
            // 初始化列表來存儲當前表單域的內容
            List<string> fieldContent = new List<string>();
 
            // 檢查該域是否為文本框
            if (field is PdfTextBoxFieldWidget textBoxField)
            {
                // 將文本框的名稱和值添加到列表中
                fieldContent.Add($"文本框名稱:{textBoxField.Name}");
                fieldContent.Add($"文本框值:{textBoxField.Text}");
            }
            // 檢查該域是否為列表框
            else if (field is PdfListBoxWidgetFieldWidget listBoxField)
            {
                fieldContent.Add($"列表框名稱:{listBoxField.Name}");
                fieldContent.Add("列表框選項:");
                foreach (PdfListWidgetItem item in listBoxField.Values)
                {
                    fieldContent.Add($"{item.Value}");
                }
                fieldContent.Add($"列表框選中項:{listBoxField.SelectedValue}");
            }
            // 檢查該域是否為下拉框
            else if (field is PdfComboBoxWidgetFieldWidget comboBoxField)
            {
                fieldContent.Add($"下拉框名稱:{comboBoxField.Name}");
                fieldContent.Add("下拉框選項:");
                foreach (PdfListWidgetItem item in comboBoxField.Values)
                {
                    fieldContent.Add($"{item.Value}");
                }
                fieldContent.Add($"下拉框選中項:{comboBoxField.SelectedValue}");
            }
            // 檢查該域是否為單選按鈕
            else if (field is PdfRadioButtonListFieldWidget radioBtnField)
            {
                fieldContent.Add($"單選按鈕名稱:{radioBtnField.Name}");
                fieldContent.Add($"單選按鈕選中項:{radioBtnField.SelectedValue}");
            }
            // 檢查該域是否為復選框
            else if (field is PdfCheckBoxWidgetFieldWidget checkBoxField)
            {
                fieldContent.Add($"復選框名稱:{checkBoxField.Name}");
                fieldContent.Add($"復選框狀態(tài):{(checkBoxField.Checked ? "選中" : "未選中")}");
            }
 
            // 返回當前表單域的內容列表
            return fieldContent;
        }
    }
}

以上就是使用C# 讀取PDF表單域數(shù)據(jù)的全部內容。

到此這篇關于C#提取PDF表單數(shù)據(jù)的實現(xiàn)流程的文章就介紹到這了,更多相關C#提取PDF表單數(shù)據(jù)內容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關文章希望大家以后多多支持腳本之家!

相關文章

  • C#使用TcpListener及TcpClient開發(fā)一個簡單的Chat工具實例

    C#使用TcpListener及TcpClient開發(fā)一個簡單的Chat工具實例

    下面小編就為大家分享一篇C#使用TcpListener及TcpClient開發(fā)一個簡單的Chat工具實例,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2017-12-12
  • 簡述C#枚舉高級戰(zhàn)術

    簡述C#枚舉高級戰(zhàn)術

    這篇文章主要介紹了簡述C#枚舉高級戰(zhàn)術,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧
    2020-10-10
  • c#使用linq把多列的List轉化為只有指定列的List

    c#使用linq把多列的List轉化為只有指定列的List

    這篇文章主要介紹了c#使用linq把多列的List轉化為只有指定列的List,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧
    2019-12-12
  • C#遞歸算法尋找數(shù)組中第K大的數(shù)

    C#遞歸算法尋找數(shù)組中第K大的數(shù)

    首先將向量V從中間位置分開,分成左和右,分好后,中間值的索引如果恰恰等于K,就找到了,否則如果中間元素索引大于K,則在左子表中繼續(xù)查找,忽略右子表,如果中間值索引小于K,則在右子表中繼續(xù)查找,如此循環(huán)往復。
    2016-06-06
  • 基于C#實現(xiàn)一維碼和二維碼打印功能

    基于C#實現(xiàn)一維碼和二維碼打印功能

    本文介紹了基于C#的條碼打印程序的設計與實現(xiàn),包括技術選型、核心功能、系統(tǒng)架構、參數(shù)配置、工程實踐、擴展功能、調試測試及部署建議,需要的朋友可以參考下
    2025-12-12
  • Unity命令行打包WebGL的示例代碼

    Unity命令行打包WebGL的示例代碼

    這篇文章主要介紹了Unity命令行打包WebGL的相關知識,本文通過實例代碼給大家介紹的非常詳細,對大家的學習或工作具有一定的參考借鑒價值,需要的朋友可以參考下
    2022-02-02
  • C#實現(xiàn)的JS操作類實例

    C#實現(xiàn)的JS操作類實例

    這篇文章主要介紹了C#實現(xiàn)的JS操作類,封裝了C#關于javascript的彈出對話框、返回上一頁、跳轉等常用操作,非常具有實用價值,需要的朋友可以參考下
    2015-03-03
  • 深入理解C#實現(xiàn)快捷鍵(系統(tǒng)熱鍵)響應的方法

    深入理解C#實現(xiàn)快捷鍵(系統(tǒng)熱鍵)響應的方法

    本篇文章是對使用C#實現(xiàn)快捷鍵(系統(tǒng)熱鍵)響應的方法進行了詳細的分析介紹,需要的朋友參考下
    2013-05-05
  • visio二次開發(fā)--判斷文檔是否已發(fā)生變化(變化就加星號*)

    visio二次開發(fā)--判斷文檔是否已發(fā)生變化(變化就加星號*)

    最近做一個故障樹診斷的項目,用visio二次開發(fā),可以同時打開多個繪制的故障樹圖形文檔。項目中需要實現(xiàn)判斷文檔是否發(fā)生變化,這是很多編輯軟件的基本功能,變化了就加個星號*
    2013-04-04
  • C#中List和SortedList的簡介

    C#中List和SortedList的簡介

    今天小編就為大家分享一篇關于C#中List和SortedList的簡介,小編覺得內容挺不錯的,現(xiàn)在分享給大家,具有很好的參考價值,需要的朋友一起跟隨小編來看看吧
    2018-10-10

最新評論

丹巴县| 伊吾县| 方山县| 虎林市| 长兴县| 永丰县| 孝义市| 望奎县| 凤台县| 尼勒克县| 逊克县| 信阳市| 方正县| 武邑县| 原平市| 诏安县| 安图县| 镇江市| 卢氏县| 金溪县| 利川市| 浦江县| 沧州市| 永吉县| 昌图县| 桐梓县| 米脂县| 南投市| 巨野县| 睢宁县| 黑龙江省| 淳安县| 舞钢市| 太湖县| 屯昌县| 于田县| 海阳市| 鹤峰县| 林芝县| 云南省| 双城市|