Trabalhando com Formulários XFA

A classe Form oferece a capacidade de lidar com AcroForm estático e você pode obter uma instância de campo específica usando o método GetFieldFacade(..) da classe Form. No entanto, os campos XFA não podem ser acessados ​​via método Form.GetFieldFacade(..). Em vez disso, use Document.Form.XFA para obter/definir valores de campo e manipular o modelo de campo XFA (definir propriedades de campo).

O seguinte trecho de código também funciona com a biblioteca Aspose.PDF.Drawing.

Preencher campos XFA

O seguinte trecho de código mostra como preencher campos em um formulário XFA. O seguinte trecho de código mostra como preencher campos em um formulário XFA.

// Para exemplos completos e arquivos de dados, por favor, visite https://github.com/aspose-pdf/Aspose.PDF-for-.NET
// O caminho para o diretório de documentos.
string dataDir = RunExamples.GetDataDir_AsposePdf_Forms();

// Carregar formulário XFA
Document doc = new Document(dataDir + "FillXFAFields.pdf");

// Obter nomes dos campos do formulário XFA
string[] names = doc.Form.XFA.FieldNames;

// Definir valores dos campos
doc.Form.XFA[names[0]] = "Campo 0";
doc.Form.XFA[names[1]] = "Campo 1";
dataDir = dataDir + "Filled_XFA_out.pdf";
// Salvar o documento atualizado
doc.Save(dataDir);

Converter XFA para Acroform

Formulários dinâmicos são baseados em uma especificação XML conhecida como XFA, a “Arquitetura de Formulários XML”. Formulários dinâmicos são baseados em uma especificação XML conhecida como XFA, a “Arquitetura de Formulários XML”.

Atualmente, o PDF suporta dois métodos diferentes para integrar dados e formulários PDF:

  • AcroForms (também conhecidos como formulários Acrobat), introduzidos e incluídos na especificação do formato PDF 1.2.
  • Formulários Adobe XML Forms Architecture (XFA), introduzidos na especificação do formato PDF 1.5 como um recurso opcional (A especificação XFA não está incluída na especificação PDF, apenas referenciada.)

Não podemos extrair ou manipular páginas de Formulários XFA, porque o conteúdo do formulário é gerado em tempo de execução (durante a visualização do formulário XFA) dentro da aplicação que tenta exibir ou renderizar o formulário XFA. O Aspose.PDF tem um recurso que permite aos desenvolvedores converter formulários XFA para AcroForms padrão.

// Para exemplos completos e arquivos de dados, por favor, vá para https://github.com/aspose-pdf/Aspose.PDF-for-.NET
// O caminho para o diretório de documentos.
string dataDir = RunExamples.GetDataDir_AsposePdf_Forms();

// Carregar formulário XFA dinâmico
Document document = new Document(dataDir + "DynamicXFAToAcroForm.pdf");

// Definir o tipo de campos de formulário como AcroForm padrão
document.Form.Type = FormType.Standard;

dataDir = dataDir + "Standard_AcroForm_out.pdf";
// Salvar o PDF resultante
document.Save(dataDir);

Obter propriedades do campo XFA

Para acessar as propriedades do campo, primeiro use Document.Form.XFA.Teamplate para acessar o template do campo. O trecho de código a seguir mostra os passos para obter as coordenadas X e Y de um campo de formulário XFA.

// Para exemplos completos e arquivos de dados, por favor, visite https://github.com/aspose-pdf/Aspose.PDF-for-.NET
// O caminho para o diretório de documentos.
string dataDir = RunExamples.GetDataDir_AsposePdf_Forms();

// Carregar o formulário XFA
Document doc = new Document(dataDir + "GetXFAProperties.pdf");

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

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

// Obter posição do campo
Console.WriteLine(doc.Form.XFA.GetFieldTemplate(names[0]).Attributes["x"].Value);

// Obter posição do campo
Console.WriteLine(doc.Form.XFA.GetFieldTemplate(names[0]).Attributes["y"].Value);

dataDir = dataDir + "Filled_XFA_out.pdf";
// Salvar o documento atualizado
doc.Save(dataDir);