phpcms 视频网站模板,百度推广可以自己开户吗,镇江公司做网站,做网站用什么后缀格式做好目录
使用工具
C# 提取多个PDF表单域的数据
C# 提取特定PDF表单域的数据 PDF表单是一种常见的数据收集工具#xff0c;广泛应用于调查问卷、业务合同等场景。凭借出色的跨平台兼容性和标准化特点#xff0c;PDF表单在各行各业中得到了广泛应用。然而#xff0c;当需要整合…目录
使用工具
C# 提取多个PDF表单域的数据
C# 提取特定PDF表单域的数据 PDF表单是一种常见的数据收集工具广泛应用于调查问卷、业务合同等场景。凭借出色的跨平台兼容性和标准化特点PDF表单在各行各业中得到了广泛应用。然而当需要整合、分析或导入大量已填写的表单数据时传统的手动处理方式不仅耗时而且容易出错。因此掌握自动提取PDF表单数据的方法不仅能大幅提高工作效率还能确保数据处理的准确性。本文将探讨如何使用C# 实现自动化PDF表单数据提取流程。
使用工具C# 提取多个PDF表单域的数据C# 提取特定PDF表单域的数据
使用工具
要使用C# 提取PDF表单的数据需要用到合适的PDF文档处理库。本文所使用的是Spire.PDF for .NET库。该库主要用于在 .NET 应用程序中创建、读取、编辑、转换 和打印PDF 文档。
安装 Spire.PDF for .NET
你可以在 NuGet 包管理器中运行以下命令安装 Spire.PDF for .NET
PM Install-Package Spire.PDF
如果你已经安装了该库并希望升级到最新版本可以使用以下命令
PM Update-Package Spire.PDF
C# 提取多个PDF表单域的数据
PDF 表单可能包含多种类型的域例如文本框、列表框、下拉框、单选按钮和复选框。每种域类型需要采用不同的方法来提取其数据。以下是提取这些类型的域的数据时所使用的关键属性
文本框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 属性提取复选框的名称及其状态是否被选中。
以下代码展示了如何使用 C# 从多个 PDF 表单域中提取数据
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);// 创建列表存储提取的域名称及其值Liststring content new Liststring();// 获取 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;// 提取当前表单域的内容名称和值Liststring currentFieldContent ExtractFieldContent(field);// 如果提取到域内容则将其添加到 content 列表中if (currentFieldContent.Count 0){content.AddRange(currentFieldContent);// 如果不是最后一个表单域添加一个空行用于分隔不同域的内容if (i formWidget.FieldsWidget.List.Count - 1){content.Add(); // 添加空行分隔不同域的内容}}}}// 将提取的内容逐行写入文本文件File.WriteAllLines(提取域数据.txt, content);}}/// summary/// 提取单个 PDF 表单域的内容域名和域值/// 根据不同的表单域类型文本框、列表框、下拉框、单选按钮、复选框提取相应的值/// /summary/// param namefield当前的 PDF 表单域对象/param/// returns包含域内容的字符串列表/returnsprivate static Liststring ExtractFieldContent(PdfField field){// 初始化列表来存储当前表单域的内容Liststring fieldContent new Liststring();// 检查该域是否为文本框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($复选框状态{(checkBoxField.Checked ? 选中 : 未选中)});}// 返回当前表单域的内容return fieldContent;}}
}C# 提取特定PDF表单域的数据
如果你需要从特定的表单域中提取数据可以通过该表单域的名称直接访问它然后通过判断其类型对应地获取其内容。
以下代码展示了如何使用C# 从名为 “国家” 的PDF表单域中提取数据
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);// 创建列表来存储提取的表单域名称及其值Liststring content new Liststring();// 获取 PDF 文档的表单对象PdfFormWidget formWidget doc.Form as PdfFormWidget;// 指定域名称string fieldName 国家;// 检查表单对象中是否包含表单域if (formWidget?.FieldsWidget.Count 0){// 通过名称访问特定表单域PdfField specificField formWidget.FieldsWidget[fieldName];// 确保域存在再进行处理if (specificField ! null){// 提取特定表单域的内容名称和值Liststring specificFieldContent ExtractFieldContent(specificField);// 如果提取到内容则将其添加到 content 列表中if (specificFieldContent.Count 0){content.AddRange(specificFieldContent);}}else{content.Add($未找到域 {fieldName});}}else{content.Add(PDF 表单中未找到任何域);}// 将提取的内容逐行写入文本文件File.WriteAllLines(提取特定域数据.txt, content);}}/// summary/// 提取单个 PDF 表单域的内容名称和值/// 处理不同类型的表单域如文本框、列表框、下拉框、单选按钮和复选框/// /summary/// param namefield当前 PDF 表单域对象/param/// returns包含表单域内容的字符串列表/returnsprivate static Liststring ExtractFieldContent(PdfField field){// 初始化列表来存储当前表单域的内容Liststring fieldContent new Liststring();// 检查该域是否为文本框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($复选框状态{(checkBoxField.Checked ? 选中 : 未选中)});}// 返回当前表单域的内容列表return fieldContent;}}
}以上就是使用C# 读取PDF表单域数据的全部内容。感谢阅读