Trabajando con Formularios XFA

La clase Form proporciona la capacidad para tratar con AcroForm estático y puedes obtener una instancia de campo particular utilizando el método GetFieldFacade(..) de la clase Form. Sin embargo, los campos XFA no se pueden acceder mediante el método Form.GetFieldFacade(..). En su lugar, usa Document.Form.XFA para obtener/establecer valores de campos y manipular la plantilla de campo XFA (establecer propiedades de campo).

El siguiente fragmento de código también funciona con la biblioteca Aspose.PDF.Drawing.

Llenar campos XFA

El siguiente fragmento de código muestra cómo llenar campos en un formulario XFA. El siguiente fragmento de código te muestra cómo llenar campos en un formulario XFA.

// Para ejemplos completos y archivos de datos, por favor visita https://github.com/aspose-pdf/Aspose.PDF-for-.NET
// La ruta al directorio de documentos.
string dataDir = RunExamples.GetDataDir_AsposePdf_Forms();

// Cargar formulario XFA
Document doc = new Document(dataDir + "FillXFAFields.pdf");

// Obtener nombres de los campos del formulario XFA
string[] names = doc.Form.XFA.FieldNames;

// Establecer valores de los campos
doc.Form.XFA[names[0]] = "Campo 0";
doc.Form.XFA[names[1]] = "Campo 1";
dataDir = dataDir + "Filled_XFA_out.pdf";
// Guardar el documento actualizado
doc.Save(dataDir);

Convertir XFA a Acroform

Los formularios dinámicos se basan en una especificación XML conocida como XFA, la “Arquitectura de Formularios XML”. Los formularios dinámicos se basan en una especificación XML conocida como XFA, la “Arquitectura de Formularios XML”.

Actualmente, PDF admite dos métodos diferentes para integrar datos y formularios PDF:

  • AcroForms (también conocidos como formularios Acrobat), introducidos e incluidos en la especificación del formato PDF 1.2.
  • Formularios de Arquitectura de Formularios XML de Adobe (XFA), introducidos en la especificación del formato PDF 1.5 como una característica opcional (La especificación XFA no está incluida en la especificación PDF, solo se hace referencia a ella.)

No podemos extraer o manipular páginas de Formularios XFA, porque el contenido del formulario se genera en tiempo de ejecución (durante la visualización del formulario XFA) dentro de la aplicación que intenta mostrar o renderizar el formulario XFA. Aspose.PDF tiene una característica que permite a los desarrolladores convertir formularios XFA en AcroForms estándar.

// Para ejemplos completos y archivos de datos, por favor visite https://github.com/aspose-pdf/Aspose.PDF-for-.NET
// La ruta al directorio de documentos.
string dataDir = RunExamples.GetDataDir_AsposePdf_Forms();

// Cargar formulario XFA dinámico
Document document = new Document(dataDir + "DynamicXFAToAcroForm.pdf");

// Establecer el tipo de campos de formulario como AcroForm estándar
document.Form.Type = FormType.Standard;

dataDir = dataDir + "Standard_AcroForm_out.pdf";
// Guardar el PDF resultante
document.Save(dataDir);

Obtener propiedades de campo XFA

Para acceder a las propiedades del campo, primero usa Document.Form.XFA.Template para acceder a la plantilla del campo. El siguiente fragmento de código muestra los pasos para obtener las coordenadas X e Y de un campo de formulario XFA.

// Para ejemplos completos y archivos de datos, por favor visita https://github.com/aspose-pdf/Aspose.PDF-for-.NET
// La ruta al directorio de documentos.
string dataDir = RunExamples.GetDataDir_AsposePdf_Forms();

// Cargar formulario XFA
Document doc = new Document(dataDir + "GetXFAProperties.pdf");

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

// Establecer valores de campo
doc.Form.XFA[names[0]] = "Campo 0";
doc.Form.XFA[names[1]] = "Campo 1";

// Obtener posición del campo
Console.WriteLine(doc.Form.XFA.GetFieldTemplate(names[0]).Attributes["x"].Value);

// Obtener posición del campo
Console.WriteLine(doc.Form.XFA.GetFieldTemplate(names[0]).Attributes["y"].Value);

dataDir = dataDir + "Filled_XFA_out.pdf";
// Guardar el documento actualizado
doc.Save(dataDir);