Работа с XFA формами

Класс Form предоставляет возможность работать со статической AcroForm, и вы можете получить экземпляр конкретного поля, используя метод GetFieldFacade(..) класса Form. Однако поля XFA недоступны через метод Form.GetFieldFacade(..). Вместо этого используйте Document.Form.XFA для получения/установки значений полей и управления шаблоном поля XFA (установка свойств поля).

Следующий фрагмент кода также работает с библиотекой Aspose.PDF.Drawing.

Заполнение полей XFA

Следующий фрагмент кода показывает, как заполнить поля в форме XFA. Следующий фрагмент кода показывает, как заполнять поля в форме XFA.

// Для полных примеров и файлов данных, пожалуйста, перейдите по ссылке https://github.com/aspose-pdf/Aspose.PDF-for-.NET
// Путь к директории с документами.
string dataDir = RunExamples.GetDataDir_AsposePdf_Forms();

// Загрузить XFA форму
Document doc = new Document(dataDir + "FillXFAFields.pdf");

// Получить имена полей XFA формы
string[] names = doc.Form.XFA.FieldNames;

// Установить значения полей
doc.Form.XFA[names[0]] = "Поле 0";
doc.Form.XFA[names[1]] = "Поле 1";
dataDir = dataDir + "Filled_XFA_out.pdf";
// Сохранить обновленный документ
doc.Save(dataDir);

Конвертация XFA в Acroform

Динамические формы основаны на XML спецификации, известной как XFA, “XML Forms Architecture”. Динамические формы основаны на спецификации XML, известной как XFA, “Архитектура форм XML”.

В настоящее время PDF поддерживает два различных метода интеграции данных и форм PDF:

  • AcroForms (также известные как формы Acrobat), введенные и включенные в спецификацию формата PDF 1.2.
  • Формы Adobe XML Forms Architecture (XFA), введенные в спецификацию формата PDF 1.5 как необязательная функция (спецификация XFA не включена в спецификацию PDF, она только упоминается.)

Мы не можем извлекать или манипулировать страницами форм XFA, потому что содержимое формы генерируется во время выполнения (при просмотре формы XFA) в приложении, пытающемся отобразить или визуализировать форму XFA. Aspose.PDF имеет функцию, которая позволяет разработчикам конвертировать формы XFA в стандартные AcroForms.

// Для полных примеров и файлов данных, пожалуйста, перейдите по ссылке https://github.com/aspose-pdf/Aspose.PDF-for-.NET
// Путь к каталогу документов.
string dataDir = RunExamples.GetDataDir_AsposePdf_Forms();

// Загрузка динамической XFA формы
Document document = new Document(dataDir + "DynamicXFAToAcroForm.pdf");

// Установка типа полей формы как стандартный AcroForm
document.Form.Type = FormType.Standard;

dataDir = dataDir + "Standard_AcroForm_out.pdf";
// Сохранение результирующего PDF
document.Save(dataDir);

Получение свойств полей XFA

Для доступа к свойствам полей сначала используйте Document.Form.XFA.Teamplate для доступа к шаблону поля. Следующий фрагмент кода показывает шаги получения координат X и Y поля формы XFA.

// Для полных примеров и файлов данных, пожалуйста, перейдите на https://github.com/aspose-pdf/Aspose.PDF-for-.NET
// Путь к каталогу документов.
string dataDir = RunExamples.GetDataDir_AsposePdf_Forms();

// Загрузить форму XFA
Document doc = new Document(dataDir + "GetXFAProperties.pdf");

string[] names = doc.Form.XFA.FieldNames;

// Установить значения полей
doc.Form.XFA[names[0]] = "Поле 0";
doc.Form.XFA[names[1]] = "Поле 1";

// Получить позицию поля
Console.WriteLine(doc.Form.XFA.GetFieldTemplate(names[0]).Attributes["x"].Value);

// Получить позицию поля
Console.WriteLine(doc.Form.XFA.GetFieldTemplate(names[0]).Attributes["y"].Value);

dataDir = dataDir + "Filled_XFA_out.pdf";
// Сохранить обновленный документ
doc.Save(dataDir);