Формы PDF часто используются для сбора данных и информации. Например, Анкеты обычно предназначены для сбора ответов в целях опроса. Мы взаимодействуем с различными заполняемыми PDF-формами в современном цифровом мире. Учитывая огромный объем и важность PDF-форм, Aspose.PDF for .NET API поддерживает множество функций для работы с PDF-формами. Давайте рассмотрим следующие варианты использования языка C# в этой статье:
- Создавайте заполняемые PDF-формы с помощью C#
- Заполните поле формы в существующем файле PDF с помощью С#
- Изменить поле формы в документе PDF с помощью С#
- Удалить поле формы в существующем файле PDF с помощью С#
- Сохранение расширенных прав PDF-форм с помощью C#
- Используйте JavaScript в форме PDF с помощью C#
Создавайте заполняемые PDF-формы с помощью C#
Вы можете создать заполняемую PDF-форму с нуля, используя Aspose.PDF для .NET API. Здесь мы рассмотрим базовый пример добавления двух экземпляров TextBoxField и RadioButton. Однако один из TextBoxField является однострочным, а другой — многострочным. Ниже приведены шаги для создания формы в документе PDF:
- Создайте экземпляр класса Document
- Добавить пустую страницу в документ PDF
- Добавить поле TextBox в форму
- Установите различные свойства полей, включая шрифт, границу и т. д.
- Добавьте Переключатель в форму
- Сохранить 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-файле с помощью C#
Поскольку мы рассмотрели создание формы в документе PDF с помощью C#, Aspose.PDF для .NET API также поддерживает работу с существующими формами PDF. Давайте обсудим следующие возможности API.
i) Заполните поле формы в существующем файле PDF с помощью С#
Для заполнения форм PDF мы продолжим работу с документом PDF, созданным в приведенном выше примере. Ниже приведены шаги для заполнения полей в существующем документе PDF:
- Загрузить исходный PDF-документ
- Получить Textbox поля и значения заполнения
- Получите поле переключателя и выберите вариант из группы
- Сохранить заполненную 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#:
ii) Изменить поле формы в документе PDF с помощью С#
Иногда вам может понадобиться изменить значение в любом поле формы PDF. Изменение значения в поле формы — это базовый вариант использования, которого можно достичь, выполнив следующие шаги:
- Загрузите PDF-форму
- Получить конкретное поле, используя его имя
- Изменить значение поля
- Сохраните обновленный 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. Теперь давайте рассмотрим удаление поля формы. Вам необходимо выполнить следующие шаги:
- Загрузите PDF-документ
- Вызвать метод Delete с именем поля формы
- Сохранить 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. Давайте выполним следующие шаги, чтобы выполнить это требование:
- Инициировать экземпляр класса Document
- Добавьте TextBoxField на первую страницу в определенных координатах страницы
- Настроить JavaScript
- Укажите действие документа
- Сохранить 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 предлагает множество интересных функций для работы с разными файлами. Сообщите нам свои отзывы или комментарии через Бесплатный форум поддержки.