填寫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. 獲取 Radio button field 並從組中選擇一個選項
  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 表單的擴展權限:

// 使用讀取和寫入的文件訪問權限讀取源 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");

JavaScript 在打開 PDF 文檔時獲取系統的當前日期和時間,並將該值填充到文本框中。

結論

在本文中,我們了解了在 PDF 文檔中處理表單的不同方面。使用 Aspose.PDF for .NET API 創建、填寫或編輯 PDF 表單非常簡單。 API 提供了許多這樣令人興奮的功能來處理不同的文件。通過 免費支持論壇 讓我們知道您的反饋或意見。

也可以看看