如何使用C#程序给PDF文件添加编辑域

下面是使用C#程序给PDF文件添加编辑域的完整攻略:

准备工作

在开始添加编辑域之前,我们需要准备一些工作。首先,我们需要下载和安装iTextSharp,这是一个开源的PDF编辑库。其次,我们需要安装Adobe Acrobat DC,这是一个非常流行的PDF编辑器,我们后续需要用它来验证PDF文件中添加的编辑域是否有效。

添加编辑域

一旦我们准备好了工作,我们就可以开始添加编辑域了。下面是代码示例:

using iTextSharp.text;
using iTextSharp.text.pdf;

public static void AddEditFieldToPdf(string inputFile, string outputFile, string fieldName)
{
    using (var existingPdf = new PdfReader(inputFile))
    {
        using (var stamper = new PdfStamper(existingPdf, new FileStream(outputFile, FileMode.Create)))
        {
            var textField = new TextField(stamper.Writer, new iTextSharp.text.Rectangle(100, 100, 200, 200), fieldName);
            var field = textField.GetTextField();
            stamper.AcroFields.AddTextField(field, true);
        }
    }
}

以上代码将在指定的PDF文件中添加一个名为fieldName的编辑域,坐标范围为(100, 100)(200, 200)。请注意,这些值是以PDF页面的左下角为原点,其他的坐标信息也需要以此为基准。

验证编辑域

添加编辑域之后,我们需要验证它是否有效。我们可以使用Adobe Acrobat DC打开修改后的PDF文件,然后点击“表单”按钮来查看表单元素。如果我们添加的编辑域正常工作,我们应该可以在表单中看到一个名为fieldName的文本框,我们可以使用鼠标点击它并在其中输入内容。

除了验证编辑域是否有效之外,我们还可以使用以下代码获取已经添加的编辑域列表:

using iTextSharp.text.pdf;

public static List<string> GetFormFields(string inputFile)
{
    var result = new List<string>();
    using (var reader = new PdfReader(inputFile))
    {
        var fields = reader.AcroFields;
        foreach (var field in fields.Fields)
        {
            result.Add(field.Key);
        }
    }
    return result;
}

以上代码将返回指定PDF文件中所有的表单域名。

示例

下面是两个示例说明,分别演示了在新建PDF文件中添加一个简单文本字段和动态地创建和添加一个列表字段。

示例1:添加文本字段

public static void AddTextField(string outputFile, string fieldName, string value)
{
    using (var document = new Document())
    {
        using (var writer = PdfWriter.GetInstance(document, new FileStream(outputFile, FileMode.Create)))
        {
            document.Open();

            var textField = new TextField(writer, new Rectangle(50, 700, 150, 750), fieldName)
            {
                Text = value
            };

            document.Add(new Paragraph(textField.ToString()));

            document.Close();
        }
    }
}

以上代码将在新建的PDF文件中添加一个名为fieldName的简单文本字段,坐标范围为(50, 700)(150, 750),字段值为value

示例2:添加列表字段

public static void AddListField(string outputFile, string fieldName, params string[] options)
{
    using (var document = new Document())
    {
        using (var writer = PdfWriter.GetInstance(document, new FileStream(outputFile, FileMode.Create)))
        {
            document.Open();

            var comboBoxField = new ComboBox(writer, new Rectangle(50, 700, 150, 750), fieldName, options)
            {
                Editable = false
            };

            document.Add(new Paragraph(comboBoxField.ToString()));

            document.Close();
        }
    }
}

以上代码将在新建的PDF文件中添加一个名为fieldName的列表字段,坐标范围为(50, 700)(150, 750),选项列表为options数组中的元素。此外,我们还将设置列表为不可编辑(Editable = false)。

本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:如何使用C#程序给PDF文件添加编辑域 - Python技术站

(0)
上一篇 2023年6月1日
下一篇 2023年6月1日

相关文章

  • ASP.NET页面进行GZIP压缩优化的几款压缩模块的使用简介及应用测试!(附源码)第1/2页

    ASP.NET页面进行GZIP压缩优化的几款压缩模块的使用简介及应用测试 简介 GZIP压缩是一种常用的网页页面优化技术。传输时,服务端对浏览器请求的数据进行压缩,减少传输数据量,提高页面的加载速度。本文将介绍ASP.NET页面进行GZIP压缩优化的几款压缩模块的使用方法,并进行应用测试。 使用方法 在ASP.NET网站中实现GZIP压缩,需要使用第三方的压…

    C# 2023年5月31日
    00
  • 深入了解c# 迭代器和列举器

    深入了解 C# 迭代器和列举器攻略 什么是迭代器和列举器 迭代器是一种访问集合中元素的方式,它不需要了解集合的内部结构。迭代器是一个对象,实现集合的 IEnumerable 接口,通过 GetEnumerator() 方法获取枚举器。 列举器是一个可枚举的对象,它通过实现 IEnumerator 接口,提供一种访问集合元素的方法。枚举器可以对集合进行前向和反…

    C# 2023年5月31日
    00
  • asp.net连接查询SQL数据库并把结果显示在网页上(2种方法)

    下面是详细讲解“asp.net连接查询SQL数据库并把结果显示在网页上(2种方法)”的完整攻略。 1. 简介 ASP.NET是Microsoft开发的一种Web应用程序开发技术,它使用.NET框架,支持多种编程语言,如C#、VB等。在ASP.NET中,我们可以使用ADO.NET连接到SQL Server数据库并执行查询操作,然后把结果显示在网页上。 2. 方…

    C# 2023年5月31日
    00
  • asp.net 程序性能优化的七个方面 (c#(或vb.net)程序改进)

    下面是“asp.net程序性能优化的七个方面(c#(或vb.net)程序改进)”的完整攻略: 1. 数据库优化 在开发asp.net程序时,数据库访问是性能瓶颈之一。为提高程序性能,需要优化数据库设计和访问方式。具体可以从以下几个方面着手: 1.1 数据库设计优化 合理的数据库设计可以降低数据表冗余度,提高数据读写效率。具体可以优化以下几个方面: 表设计:合…

    C# 2023年5月15日
    00
  • C# Path.GetDirectoryName()方法: 获取指定路径的目录名

    Path.GetDirectoryName() 是C#中的一个静态方法,用于返回指定路径的目录信息,即获取路径所在的目录名称。 该方法的用法如下: public static string GetDirectoryName(string path); path: 要获取目录信息的路径。 该方法返回一个字符串类型的目录名称。如果路径为空,为根目录,或为路径太短…

    C# 2023年4月19日
    00
  • c# 获取照片的经纬度和时间的示例代码

    要获取照片的经纬度和时间,我们可以使用C#语言中的ExifLib库来实现。下面我将为大家详细讲解如何使用ExifLib库来获取照片的经纬度和时间。 准备工作 在使用ExifLib库之前,需要先添加对该库的引用。可以通过NuGet包管理器来添加引用。具体步骤如下: 在Visual Studio中打开你的项目。 在“解决方案资源管理器”窗口中右击项目名称,选择“…

    C# 2023年6月1日
    00
  • C#利用FluentFTP实现FTP上传下载功能详解

    C#利用FluentFTP实现FTP上传下载功能详解 什么是FluentFTP? FluentFTP 是一个用于FTP和FTPS的C#库,是一种快速、可靠且易于使用的FTP客户端API。它从根本上就是为FTP操作而设计的,并提供了许多有价值的功能,比如断点续传,文件夹同步等。 安装FluentFTP 在 Visual Studio 中,可使用包管理器控制台命…

    C# 2023年6月3日
    00
  • C# Winform实现复制文件显示进度

    实现文件复制进度显示的方法有很多,比如使用进度条控件来实时更新复制进度,或者使用后台线程来监控文件复制状态等。 下面是C# Winform实现复制文件显示进度的完整攻略: 1.创建Winform应用程序 首先,我们需要创建一个Winform应用程序作为我们的开发环境。打开Visual Studio,选择新建项目,选择“Windows Forms应用程序”,输…

    C# 2023年6月7日
    00
合作推广
合作推广
分享本页
返回顶部