如何在Windows中使用C#填写和提取PDF表单

这篇具有很好参考价值的文章主要介绍了如何在Windows中使用C#填写和提取PDF表单。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

如何在Windows中使用C#填写和提取PDF表单

PDF表单不仅允许用户填写和提交数据,也允许用户创建各种表单域收集用户的数据,并通过提取表单字段值,将收集和合并提交的数据进一步分析或处理。PDF通过电子方式填写、保存和共享的形式,不仅减少了对纸质和手动数据输入的需求,还方便个人和组织使用。这也是PDF表单广泛应用于填写问卷调查表、注册表单、反馈表单或政府税表等的原因。

ComPDFKit C#库,允许您轻松快速地将 PDF 功能(如查看、批注、表单填写、签名和文档编辑)集成到 Windows 应用程序中。

PDF表单可以通过C#在PDF中创建表单域、编辑表单域、填写表单域、提取表单域、删除表单域和拼合PDF表单等。在本文中,我们将探讨以下2个 C# 语言在PDF表单中的使用方法:

  1. 填写PDF表单域

  2. 提取PDF表单填写的信息

1. 填写PDF表单域

在C#中使用ComPDFKit SDK填写PDF表单域非常简单。我们将通过填写以下表单中的信息作为示例,来演示如何在PDF文档中填写表单域。

如何在Windows中使用C#填写和提取PDF表单,windows,c#,pdf

在 PDF 文档中,您可能会遇到各种类型的表单域,例如文本域、复选框、单选按钮、列表框和组合框(下拉列表)、按钮键。在填写表单字段值之前,确定每个表单字段的特定类型至关重要。识别后,再使用代码填充表单域设置它们的值。请按照以下步骤填写PDF文档中的表单字段:

(1) 使用CPDFDocument document 类加载创建的PDF文档。

(2) 使用CPDFPage page类从PDF获取表单。

(3) 使用CPDFWidget 获取表单字段类型和表单域,如文本框和复选框,然后用必要的信息填充它们。

(4) 最后,使用保存方法保存填写的PDF文档。

下面的代码示例演示如何在PDF文档中填写表单域:

 //replace it to real pdf doc path
 string docPath = "";
 List<string> textFillList = new List<string>()
 {
     "ComPDFKit",
     "support@compdf.com",
     "(65)3398 9876"
 };

 //init document
 CPDFDocument pdfDoc = CPDFDocument.InitWithFilePath(docPath);

 //get all the forms on the first page
 CPDFPage pdfPage = pdfDoc.PageAtIndex(0);
 List<CPDFWidget> widgetList = pdfPage.GetAnnotations().AsEnumerable()
     .Where(x => x.Type == C_ANNOTATION_TYPE.C_ANNOTATION_WIDGET)
     .Cast<CPDFWidget>()
     .ToList();

 //get textboxs from above form collection
 List<CPDFTextWidget> textWidgetList = widgetList.AsEnumerable()
     .Where(x => x.WidgeType == C_WIDGET_TYPE.WIDGET_TEXTFIELD)
     .Cast<CPDFTextWidget>()
     .ToList();

 //get first radiobutton from above form collection
 CPDFRadioButtonWidget radioButtonWidget = widgetList.AsEnumerable()
     .Where(x => x.WidgeType == C_WIDGET_TYPE.WIDGET_RADIOBUTTON)
     .Cast<CPDFRadioButtonWidget>()
     .First();

 //get first checkbox from above form collection
 CPDFCheckBoxWidget checkBoxWidget = widgetList.AsEnumerable()
     .Where(x => x.WidgeType == C_WIDGET_TYPE.WIDGET_CHECKBOX)
     .Cast<CPDFCheckBoxWidget>()
     .First();

 //get first combobox from above form collection
 CPDFComboBoxWidget comboboxWidget = widgetList.AsEnumerable()
     .Where(x => x.WidgeType == C_WIDGET_TYPE.WIDGET_COMBOBOX)
     .Cast<CPDFComboBoxWidget>()
     .First();

 //set textbox's text value
 for (int i = 0; i < textWidgetList.Count && i < 3; i++)
 {
     CPDFTextWidget textWidget = textWidgetList[i];
     textWidget.SetText(textFillList[i]);
 }

 //set radiobutton checked
 radioButtonWidget.SetChecked(true);

 ///set checkbox checked
 checkBoxWidget.SetChecked(true);

 //set combobox selected index
 comboboxWidget.SelectItem(5);

 //save changes to orign document
 pdfDoc.WriteToLoadedPath();
 pdfDoc.Release();

如果打开表单,您将看到您在C#中使用ComPDFKit SDK已填写的PDF表单字段:

如何在Windows中使用C#填写和提取PDF表单,windows,c#,pdf

2. 提取PDF表单填写的信息

您还可以在C#中使用ComPDFKit SDK从PDF表单中提取表单字段以及字段值。我们将通过提取上述填写在表单中的信息作为示例,来演示如何在PDF文档中提取表单字段值。在提取PDF表单字段值之前,需要浏览所有表单域,再利用其相应的属性来准确提取字段值。具体步骤如下:

(1) 使用CPDFDocument document 类加载创建的PDF文档。

(2) 使用CPDFPage page类从PDF获取表单。

(3) 使用CPDFWidget 获取表单字段类型和表单域,循环访问表单中的所有表单字段和相应的值。

(4) 最后,将表单域数值写入文本文件中。

下面的代码示例演示如何在PDF文档中提取表单字段以及字段值:

//replace it to real pdf doc path
string docPath = "";

//replace it to real txt path
string txtPath = "";

//init document
CPDFDocument pdfDoc = CPDFDocument.InitWithFilePath(docPath);

//get all the forms on the first page
CPDFPage pdfPage = pdfDoc.PageAtIndex(0);
List<CPDFWidget> widgetList = pdfPage.GetAnnotations().AsEnumerable()
    .Where(x => x.Type == C_ANNOTATION_TYPE.C_ANNOTATION_WIDGET)
    .Cast<CPDFWidget>()
    .ToList();

//save export fields to txt file
using (FileStream fs = File.Create(txtPath))
{
    using (StreamWriter bw = new StreamWriter(fs))
    {
        foreach (CPDFWidget widget in widgetList)
        {
            //export textbox fields
            if (widget.WidgeType == C_WIDGET_TYPE.WIDGET_TEXTFIELD)
            {
                CPDFTextWidget textWidget = widget as CPDFTextWidget;
                bw.WriteLine(string.Format("TextBox Name: {0}", textWidget.GetFieldName()));
                bw.WriteLine(string.Format("TextBox Value: {0}", textWidget.Text));
                bw.WriteLine();
            }

            //export radio button fields
            if (widget.WidgeType == C_WIDGET_TYPE.WIDGET_RADIOBUTTON)
            {
                CPDFRadioButtonWidget radiobuttonWidget = widget as CPDFRadioButtonWidget;
                bw.WriteLine(string.Format("Radio Button Name: {0}", radiobuttonWidget.GetFieldName()));
                bw.WriteLine(string.Format("Radio Button Selected Value: {0}", radiobuttonWidget.GetGroupMemberName()));
                bw.WriteLine();
            }

            //export checkbox fields
            if (widget.WidgeType == C_WIDGET_TYPE.WIDGET_CHECKBOX)
            {
                CPDFCheckBoxWidget checkboxWidget = widget as CPDFCheckBoxWidget;
                bw.WriteLine(string.Format("CheckBox Name: {0}", checkboxWidget.GetFieldName()));
                bw.WriteLine(string.Format("CheckBox Statues: {0}", checkboxWidget.IsChecked()));
                bw.WriteLine();
            }

            //export combobox fields
            if (widget.WidgeType == C_WIDGET_TYPE.WIDGET_COMBOBOX)
            {
                CPDFComboBoxWidget comboboxWidget = widget as CPDFComboBoxWidget;
                CWidgetItem[] itemLists = comboboxWidget.LoadWidgetItems();
                CWidgetItem selectItem = comboboxWidget.GetSelectedItem();

                bw.WriteLine(string.Format("ComboBox Name: {0}", comboboxWidget.GetFieldName()));
                bw.WriteLine("ComboBox Items:");

                if (itemLists != null && itemLists.Length > 0)
                {
                    foreach (CWidgetItem item in itemLists)
                    {
                        bw.WriteLine(item.Text);
                    }
                }

                if (selectItem != null)
                {
                    bw.WriteLine(string.Format("ComboBox Selected Value: {0}", selectItem.Value));
                }
                bw.WriteLine();
            }
        }
    }
}

pdfDoc.Release();

导出的文本文件内容如下图所示:

如何在Windows中使用C#填写和提取PDF表单,windows,c#,pdf

结论

ComPDFKit SDK 允许C#开发人员在Windows应用程序中集成各种与PDF相关的功能。在本文中,我们学会了利用ComPDFKit SDK使用最简单的代码在C#中填写PDF表单,还了解了在C#中提取PDF表单字段及字段值。

除了填写和提取PDF表单域值,我们还可以通过C#在PDF中创建表单域、编辑表单域、修改表单域、删除表单域、拼合PDF表单等。查看PDF表单文档,您可以在其中找到其他选项和功能,这些选项和功能都附带代码示例。

Code Samples

ComPDFKit PDF API

Try ComPDFKit Now文章来源地址https://www.toymoban.com/news/detail-703511.html

到了这里,关于如何在Windows中使用C#填写和提取PDF表单的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 如何在 Mac 和 Windows 上合并 PDF 文件

    一次管理多种文件格式很快就会变得难以承受,并且常常会导致诸如丢失重要的 PDF 表单或以后可能需要的单个文件等问题。相反,将这些多种文件格式和单个文件合并到单个文档中会更加有效。这使您能够以统一的格式存储所有信息,并在不影响原始文件完整性的情况下更

    2024年01月24日
    浏览(44)
  • 如何恢复已删除的 PDF 文件 - Windows 11、10

    在传输数据或共享专业文档时,大多数人依赖PDF文件格式,但很少知道如何恢复意外删除或丢失的PDF文件。这篇文章旨在解释如何有效地恢复 PDF 文件。如果您身边有合适的数据恢复工具,PDF 恢复并不像看起来那么复杂。 便携式文档格式(俗称 PDF)是 Adobe 在 20 世纪 90 年代

    2024年02月14日
    浏览(48)
  • 如何在 Windows 中免费合并 PDF 文件 [在线和离线]

    PDF是一种广泛使用的文件格式,具有兼容性好、安全性高、易于打印、方便浏览等众多优点。在工作和学习过程中,经常需要将同一类型的PDF文件合并起来,以方便传输和查看,使得合并PDF文件成为一种重要的数据整合方法。 如果您想知道如何在 Windows 中合并多个 PDF 文件,

    2024年02月16日
    浏览(47)
  • C# 提取PDF中指定文本、图片的坐标

    获取 PDF 文件中文字或图片的坐标可以实现精确定位,这对于快速提取指定区域的元素,以及在 PDF 中添加注释、标记或自动盖章等操作非常有用。本文将详解如何使用国产 PDF 库 通过 C# 提取 PDF 中指定文本或图片的坐标位置( X, Y 轴) 。 ✍ 用于操作PDF文件的第三方库为 S

    2024年02月04日
    浏览(47)
  • 如何在 Mac 和 Windows 上恢复未保存或删除的 PDF

    Adobe Acrobat PDF 是一种常用格式。我们可能会在不同的 PDF 编辑器中编辑和保存 PDF 文件。但是,如果不保存 PDF 文件或不小心将其删除,那将是一种令人不安的体验。 保持冷静!首先,尽可能多地停止运行应用程序,这样它们就不会向您的设备写入大量数据并永久删除您的 P

    2024年02月02日
    浏览(44)
  • 如何在 Mac 或 Windows 上将 PDF 转换为 Word 而不丢失格式

    PDF 有无数的优点,但它不能像 Microsoft Word 文档那样容易编辑。如果您没有价格总是很高的 PDF 编辑器,您将无法根据需要编辑或使用 PDF 源。但是我们可以将PDF转成Word,方便编辑。  有很多解决方案可用于在 Mac 上将 PDF 转换为可编辑的 Word,但是 PDF 到 Word 的转换不会完美无

    2024年02月05日
    浏览(67)
  • Python使用Selenium自动实现表单填写之龙年纪念币预约(附源码,源码有注释解析,已测试可用

    声明 :本文只做技术交流,不可用代码为商业用途,文末有源码下载,已测试可用。 Part 1 配置文件改写(源码 有详细的注释说明 读取配置文件,自己组数据库,录入信息 配置文件 Part 2 主函数 每一期的xpath路径都不一样 所以需要提前去网站获取 新的 Xpath 具体方法如下

    2024年02月01日
    浏览(45)
  • 使用C#创建安装Windows服务程序(干货)

    开发语言:C# 开发环境: Visual Studio 2022 微软官方文档:https://learn.microsoft.com/zh-cn/dotnet/framework/windows-services/ 最近在公司要求使用Windows服务作为消息队列的消费者,所以自行研究了一下C#中Windows服务如何创建以及如何使用,以及部署的方式。我是西瓜程序猿,此篇记录一下供

    2024年02月12日
    浏览(52)
  • Windows 下使用C#开启蓝牙(未解决的坑)

    当程序检测到蓝牙未打开时需要程序自动将W10的蓝牙开启。 Turn on/off Bluetooth radio/adapter from cmd/powershell in Windows 10 - Super User 上的这个连接是通过powershell 开启蓝牙具体代码如下  执行上面的powershell 脚本需要输入On开启蓝牙,输入Off关闭蓝牙 由于我只需要开启蓝牙就将powers

    2024年01月18日
    浏览(44)
  • 怎样控制键盘按键自动填写网页表单

    浏览器中使用模拟键盘按键填写网页表单,不但可以完成数据输入,输入时还能真实地 触发键盘元素绑定的键盘事件 。 打开木头浏览器的工具菜单,进入项目管理容器,创建“填写内容”步骤,并打开百度网站测试。 1、输入键盘对应的字符,包括字母、数字和符号,但不

    2024年02月09日
    浏览(61)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包