填写 PDF 表格

PDF 表单经常用于收集数据和信息。例如,调查问卷通常旨在收集用于调查目的的答复。当我们与当今数字世界中不同的可填写 PDF 表单进行交互时,您可以以编程方式填写、编辑和修改 C# 中的 PDF 表单。考虑到 PDF 表单的巨大范围和重要性,Aspose.PDF for .NET API 支持许多功能来处理 PDF 表单。让我们在本文中使用 C# 语言探索以下用例:

使用 C# 以编程方式创建可填写的 PDF 表单

您可以使用 Aspose.PDF for .NET API 从头开始创建可填写的 PDF 表单。这里我们将考虑添加两个 TextBoxField 实例和 RadioButton 的基本示例。但是,其中一个 TextBoxField 是单行的,而另一个是多行的。以下是在 PDF 文档中创建表单的步骤:

  1. 创建 Document 类的实例
  2. 在 PDF 文档中添加空白页
  3. 在表单中添加 TextBox 字段
  4. 设置字段的不同属性,包括字体、边框等。
  5. 在表格中添加单选按钮
  6. 保存 PDF 文档

以下代码片段显示了如何使用 C# 在 PDF 中创建表单:

Document pdfdoc = new Document();
Page page = pdfdoc.Pages.Add();
TextBoxField nameBox = new TextBoxField(pdfdoc, new Aspose.Pdf.Rectangle(275, 740, 440, 770));
nameBox.PartialName = "nameBox1";
nameBox.DefaultAppearance.FontSize = 10;
nameBox.Multiline = true;
Border nameBorder = new Border(nameBox);
nameBorder.Width = 1;
nameBox.Border = nameBorder;
nameBox.Characteristics.Border = System.Drawing.Color.Black;
nameBox.Color = Aspose.Pdf.Color.FromRgb(System.Drawing.Color.Red);
TextBoxField mrnBox = new TextBoxField(pdfdoc, new Aspose.Pdf.Rectangle(275, 718, 440, 738));
mrnBox.PartialName = "Box1";
mrnBox.DefaultAppearance.FontSize = 10;
Border mrnBorder = new Border(mrnBox);
mrnBorder.Width = 1;
mrnBox.Border = mrnBorder;
mrnBox.Characteristics.Border = System.Drawing.Color.Black;
mrnBox.Color = Aspose.Pdf.Color.FromRgb(System.Drawing.Color.Red);
// 将表单域添加到 PDF 文档的第一页            
pdfdoc.Form.Add(nameBox, 1);
pdfdoc.Form.Add(mrnBox, 1);

//在 PDF 中的特定位置坐标处添加单选按钮
Aspose.Pdf.Table table = new Aspose.Pdf.Table();
//在这里设置位置
table.Left = 200;
table.Top = 300;
table.ColumnWidths = "120";
page.Paragraphs.Add(table);
Aspose.Pdf.Row r1 = table.Rows.Add();
Aspose.Pdf.Row r2 = table.Rows.Add();
Aspose.Pdf.Cell c1 = r1.Cells.Add();
Aspose.Pdf.Cell c2 = r2.Cells.Add();
RadioButtonField rf = new RadioButtonField(page);
rf.PartialName = "radio";
pdfdoc.Form.Add(rf, 1);
RadioButtonOptionField opt1 = new RadioButtonOptionField();
RadioButtonOptionField opt2 = new RadioButtonOptionField();
opt1.OptionName = "Yes";
opt2.OptionName = "No";
opt1.Width = 15;
opt1.Height = 15;
opt2.Width = 15;
opt2.Height = 15;
rf.Add(opt1);
rf.Add(opt2);
opt1.Border = new Border(opt1);
opt1.Border.Width = 1;
opt1.Border.Style = BorderStyle.Solid;
opt1.Characteristics.Border = System.Drawing.Color.Black;
opt1.DefaultAppearance.TextColor = System.Drawing.Color.Red;
opt1.Caption = new TextFragment("Yes");
opt2.Border = new Border(opt1);
opt2.Border.Width = 1;
opt2.Border.Style = BorderStyle.Solid;
opt2.Characteristics.Border = System.Drawing.Color.Black;
opt2.DefaultAppearance.TextColor = System.Drawing.Color.Red;
opt2.Caption = new TextFragment("No");
c1.Paragraphs.Add(opt1);
c2.Paragraphs.Add(opt2);
pdfdoc.Save(dataDir + "Fillable_PDF_Form.pdf");

下面的屏幕截图显示了包含上述代码片段中指定的表单字段的输出 PDF 文档:

PDF表格

使用 C# 填充、修改或删除现有 PDF 中的表单域

正如我们探索使用 C# 在 PDF 文档中创建表单一样,Aspose.PDF for .NET API 也支持使用现有的 PDF 表单。让我们讨论 API 的以下特性。

i) 以编程方式使用 C# 在现有 PDF 文件中填写表单字段

为了填写 PDF 表单,我们将继续使用上面示例中创建的 PDF 文档。以下是在现有 PDF 文档中填写字段的步骤:

  1. 加载源 PDF 文档
  2. 获取 Textbox 字段并填充值
  3. 获取 单选按钮字段 并从组中选择一个选项
  4. 保存填写的 PDF 表格

以下代码片段遵循这些步骤,并解释了如何使用 C# 填充 PDF 文档中的字段:

// 打开文档
Document pdfDocument = new Document(dataDir + "Fillable_PDF_Form.pdf");

// 获取字段
TextBoxField textBoxField1 = pdfDocument.Form["nameBox1"] as TextBoxField;
TextBoxField textBoxField2 = pdfDocument.Form["Box1"] as TextBoxField;
// 填写表单字段的值
textBoxField1.Value = "A quick brown fox jumped over a lazy dog.";
textBoxField2.Value = "A quick brown fox jumped over a lazy dog.";

// 获取单选按钮字段
RadioButtonField radioField = pdfDocument.Form["radio"] as RadioButtonField;
// 指定组中单选按钮的索引
radioField.Selected = 1;

dataDir = dataDir + "Fill_PDF_Form_Field.pdf";
// 保存更新的文档
pdfDocument.Save(dataDir);

下面的屏幕截图显示了使用 C# 填充 PDF 表单的表单字段:

可填写的 PDF

ii) 使用 C# 修改 PDF 文档中的表单域

有时您可能需要更改 PDF 表单的任何字段中的值。更改表单字段中的值是一个基本用例,可以通过以下步骤实现:

  1. 加载 PDF 表单
  2. 使用名称获取特定字段
  3. 修改字段值
  4. 保存更新的 PDF 文档

以下代码片段显示了如何更改 PDF 文档表单字段中的值:

// 打开文档
Document pdfDocument = new Document(dataDir + "Fill_PDF_Form_Field.pdf");
// 获取一个字段
TextBoxField textBoxField = pdfDocument.Form["nameBox1"] as TextBoxField;
// 修改字段值
textBoxField.Value = "Changed Value";
textBoxField.ReadOnly = true;
dataDir = dataDir + "ModifyFormField.pdf";
// 保存更新的文档
pdfDocument.Save(dataDir);

值得注意的是,您不仅可以更改表单的值,还可以更新其他属性。例如,在上面的代码片段中,该字段已被标记为只读。

iii) 使用 C# 删除现有 PDF 文件中的表单域

我们已经了解了如何添加和填写 PDF 表单域。现在让我们探索删除表单域。您需要按照以下步骤操作:

  1. 加载 PDF 文档
  2. 使用表单字段的名称调用 Delete 方法
  3. 保存 PDF 文档

以下代码片段显示了如何使用 C# 从 PDF 文件中删除表单字段:

// 打开文档
Document pdfDocument = new Document(dataDir + "Fill_PDF_Form_Field.pdf");
// 按名称删除特定字段
pdfDocument.Form.Delete("nameBox1");
dataDir = dataDir + "Delete_Form_Field.pdf";
// 保存修改的文档
pdfDocument.Save(dataDir);

使用 C# 保留 PDF 表单的扩展权限

PDF 表单可能具有扩展权限,也称为扩展功能,您希望在表单操作期间保留这些权限。您应该按照以下步骤逐步保存它:

  • 在 Stream 中加载 PDF 文档
  • 使用表格
  • 不带任何参数保存文件

以下 C# 代码片段说明了如何保留 PDF 表单的扩展权限:

// 使用 Read 和 Write 的 FileAccess 阅读源 PDF 表单。
// 我们需要读写权限,因为修改后,
// 我们需要将更新的内容保存在同一个文档/文件中。
FileStream fs = new FileStream(dataDir + "Fill_PDF_Form_Field.pdf", FileMode.Open, FileAccess.ReadWrite);
// 实例化文档实例
Aspose.Pdf.Document pdfDocument = new Aspose.Pdf.Document(fs);
// 从所有字段中获取值
foreach (Field formField in pdfDocument.Form)
{
    // 如果字段全名包含A1,则执行操作
    if (formField.FullName.Contains("nameBox1"))
    {
        // 将表单字段转换为 TextBox
        TextBoxField textBoxField = formField as TextBoxField;
        // 修改字段值
        textBoxField.Value = "Preserve Extended Features";
    }
}
// 在 save FileStream 中保存更新的文档
pdfDocument.Save();
// 关闭文件流对象
fs.Close();

使用 C# 在 PDF 表单中使用 JavaScript

您可以通过 Aspose.PDF for .NET API 在 PDF 表单字段中使用 JavaScript。让我们按照以下步骤来实现此要求:

  1. 启动 Document 类的实例
  2. 在特定页面坐标的第一页添加一个 TextBoxField
  3. 设置 JavaScript
  4. 指定文档操作
  5. 保存 PDF 文档

以下代码片段显示了如何使用 C# 以 PDF 形式添加 JavaScript:

Aspose.Pdf.Document pdfdoc = new Aspose.Pdf.Document();
pdfdoc.Pages.Add();
Aspose.Pdf.Forms.TextBoxField textBoxField = new Aspose.Pdf.Forms.TextBoxField(pdfdoc.Pages[1], new Aspose.Pdf.Rectangle(85, 750, 215, 770));
textBoxField.PartialName = "textbox1";
textBoxField.Value = "Text Box";
//TextBoxField.Border = new Border();
Border border = new Border(textBoxField);
border.Width = 2;
border.Dash = new Dash(1, 1);
textBoxField.Border = border;
textBoxField.DefaultAppearance.FontSize = 10;
textBoxField.Color = Aspose.Pdf.Color.FromRgb(System.Drawing.Color.Green);
// 向文档添加字段
pdfdoc.Form.Add(textBoxField, 1);
string JS = @"var w = this.getField('" + textBoxField.PartialName + "'); var today = new Date(); w.value = today.toLocaleString();";
pdfdoc.OpenAction = new JavascriptAction(JS);
pdfdoc.Save(dataDir + "JS_Form.pdf");

当打开 PDF 文档并将该值填充到文本框中时,JavaScript 获取系统的当前日期和时间。

结论

在本文中,我们了解了在 PDF 文档中使用表单的不同方面。使用 Aspose.PDF for .NET API 可以轻松创建、填写或编辑 PDF 表单。 API 提供了许多这样令人兴奋的功能来处理不同的文件。通过 免费支持论坛 让我们知道您的反馈或意见。

也可以看看