Заполнить PDF-форму

Формы PDF часто используются для сбора данных и информации. Например, Анкеты обычно предназначены для сбора ответов в целях опроса. Мы взаимодействуем с различными заполняемыми PDF-формами в современном цифровом мире. Учитывая огромный объем и важность PDF-форм, Aspose.PDF for .NET API поддерживает множество функций для работы с PDF-формами. Давайте рассмотрим следующие варианты использования языка C# в этой статье:

Создавайте заполняемые PDF-формы с помощью C#

Вы можете создать заполняемую PDF-форму с нуля, используя Aspose.PDF для .NET API. Здесь мы рассмотрим базовый пример добавления двух экземпляров TextBoxField и RadioButton. Однако один из TextBoxField является однострочным, а другой — многострочным. Ниже приведены шаги для создания формы в документе PDF:

  1. Создайте экземпляр класса Document
  2. Добавить пустую страницу в документ PDF
  3. Добавить поле TextBox в форму
  4. Установите различные свойства полей, включая шрифт, границу и т. д.
  5. Добавьте Переключатель в форму
  6. Сохранить PDF-документ

Следующий фрагмент кода показывает, как создать форму в формате PDF с помощью C#:

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);

//Добавить Radiobuttons в определенные координаты положения в 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-форма

Заполнение, изменение или удаление полей формы в существующем PDF-файле с помощью C#

Поскольку мы рассмотрели создание формы в документе PDF с помощью C#, Aspose.PDF для .NET API также поддерживает работу с существующими формами PDF. Давайте обсудим следующие возможности API.

i) Заполните поле формы в существующем файле PDF с помощью С#

Для заполнения форм PDF мы продолжим работу с документом PDF, созданным в приведенном выше примере. Ниже приведены шаги для заполнения полей в существующем документе PDF:

  1. Загрузить исходный PDF-документ
  2. Получить Textbox поля и значения заполнения
  3. Получите поле переключателя и выберите вариант из группы
  4. Сохранить заполненную PDF-форму

Следующий фрагмент кода следует этим шагам и объясняет, как заполнять поля в документе PDF с помощью C#:

// Открыть документ
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);

На снимке экрана ниже показаны заполненные поля формы PDF с использованием C#:

Заполняемый PDF

ii) Изменить поле формы в документе 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) Удалить поле формы в существующем файле PDF с помощью С#

Мы уже узнали о добавлении и заполнении полей формы PDF. Теперь давайте рассмотрим удаление поля формы. Вам необходимо выполнить следующие шаги:

  1. Загрузите PDF-документ
  2. Вызвать метод Delete с именем поля формы
  3. Сохранить PDF-документ

Следующий фрагмент кода показывает, как удалить поле формы из файла PDF с помощью C#:

// Открыть документ
Document pdfDocument = new Document(dataDir + "Fill_PDF_Form_Field.pdf");
// Удалить конкретное поле по имени
pdfDocument.Form.Delete("nameBox1");
dataDir = dataDir + "Delete_Form_Field.pdf";
// Сохранить измененный документ
pdfDocument.Save(dataDir);

Сохранение расширенных прав PDF-форм с помощью C#

Форма PDF может иметь расширенные права, также называемые расширенными функциями, которые вы хотели бы сохранить при работе с формой. Вы должны сохранить его постепенно, выполнив следующие шаги:

  • Загрузите документ PDF в Stream
  • Работа с формой
  • Сохраните файл без каких-либо параметров

В следующем фрагменте кода C# объясняется, как сохранить расширенные права формы PDF:

// Прочитайте исходную PDF-форму с помощью FileAccess для чтения и записи.
// Нам нужно разрешение на чтение и запись, потому что после модификации
// Нам нужно сохранить обновленное содержимое в том же документе/файле.
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";
    }
}
// Сохраните обновленный документ в файле сохранения FileStream.
pdfDocument.Save();
// Закройте объект «Файловый поток».
fs.Close();

Используйте JavaScript в форме PDF с помощью C#

Вы можете использовать JavaScript в полях формы PDF с Aspose.PDF для .NET API. Давайте выполним следующие шаги, чтобы выполнить это требование:

  1. Инициировать экземпляр класса Document
  2. Добавьте TextBoxField на первую страницу в определенных координатах страницы
  3. Настроить JavaScript
  4. Укажите действие документа
  5. Сохранить PDF-документ

В следующем фрагменте кода показано, как добавить JavaScript в форму PDF с помощью C#:

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 = новая граница();
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. Создание, заполнение или редактирование PDF-форм упрощается с помощью Aspose.PDF для .NET API. API предлагает множество интересных функций для работы с разными файлами. Сообщите нам свои отзывы или комментарии через Бесплатный форум поддержки.

Смотрите также