Работа с 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);