Preencha e leia formulários XFA usando C#

A Adobe introduziu formulários interativos e dinâmicos chamados de formulários XFA. XFA significa Arquitetura de Formulários XML. O formulário XFA é semelhante a um arquivo HTML. Ele contém campos preenchíveis e determina o layout ou a aparência como um formulário incorporado em documentos PDF. Neste artigo, aprenderemos como preencher e ler formulários XFA usando C#.

Os seguintes tópicos serão abordados neste artigo:

API C# para ler e preencher formulários XFA

Para trabalhar com formulários XFA PDF, usaremos a API Aspose.PDF for .NET. Ele nos permite gerar, modificar, converter, renderizar, proteger e imprimir documentos suportados sem usar o Adobe Acrobat. Por favor, baixe a DLL da API ou instale-a usando NuGet.

PM> Install-Package Aspose.Pdf

Preencha formulários XFA usando C#

Podemos preencher formulários XFA programaticamente seguindo as etapas abaixo:

  1. Primeiramente, carregue um arquivo de formulário XFA usando a classe Document.
  2. Obtenha os nomes dos campos de formulário XFA carregados.
  3. Defina os valores do campo.
  4. Finalmente, chame o método Save(). Ele usa o caminho do arquivo de saída como um argumento.

O exemplo de código a seguir mostra como preencher um formulário XFA usando C#.

// Este exemplo de código demonstra como preencher um formulário XFA.
// Carregar formulário XFA
Document doc = new Document(@"C:\Files\PDF\FillXFAFields.pdf");

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

// Definir valores de campo
doc.Form.XFA[names[0]] = "12345";
doc.Form.XFA[names[1]] = "24/02/2022";
doc.Form.XFA[names[2]] = "Company Name";
doc.Form.XFA[names[3]] = "Company Address";
doc.Form.XFA[names[4]] = "Company City";
doc.Form.XFA[names[5]] = "Canada";
doc.Form.XFA[names[6]] = "Alberta";
doc.Form.XFA[names[7]] = "T9S";
doc.Form.XFA[names[8]] = "+112345567";
doc.Form.XFA[names[10]] = "Mr. John Smith";
doc.Form.XFA[names[11]] = "Delivered to Company Name";
doc.Form.XFA[names[12]] = "Delivery Company Address";
doc.Form.XFA[names[13]] = "Delivery City";
doc.Form.XFA[names[17]] = "+123456789";
doc.Form.XFA[names[19]] = "Mr. Will Smith";
doc.Form.XFA[names[22]] = "57251";

// Salve o formulário
doc.Save(@"C:\Files\PDF\Filled_XFA_out.pdf");
Preencha formulários XFA usando C#.

Preencha formulários XFA usando C#.

Ler formulários XFA usando C#

Podemos ler o formulário XFA preenchido seguindo as etapas abaixo:

  1. Primeiramente, carregue um arquivo Excel usando a classe Document.
  2. Obtenha os nomes dos campos de formulário XFA carregados.
  3. Em um loop, obtenha detalhes do campo usando o método GetFieldTemplate().
  4. Por fim, mostre os atributos do campo.

O exemplo de código a seguir mostra como ler o formulário XFA preenchido usando C#.

// Este exemplo de código demonstra como ler um formulário XFA preenchido.
// Carregar formulário XFA
Document doc = new Document(@"C:\Files\PDF\Filled_XFA_out.pdf");

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

for (int count=0; count<names.Length; count++)
{
    // Obter detalhes do campo
    var field = doc.Form.XFA.GetFieldTemplate(names[count]);
    string fieldName = doc.Form.XFA.GetFieldTemplate(names[count]).InnerText;
    string fieldValue = doc.Form.XFA[names[count]];

    if (!string.IsNullOrEmpty(fieldValue) && fieldValue != "0")
    {
        Console.WriteLine("Field Name : " + field.Attributes["name"].Value);
        Console.WriteLine("Field Description : " + fieldName);
        Console.WriteLine("Field Value : " + fieldValue);
        Console.WriteLine();
    }
}
Leia o formulário XFA preenchido usando C#.

Leia o formulário XFA preenchido usando C#.

Obtenha uma licença gratuita

Experimente a API sem limitações de avaliação solicitando uma licença temporária gratuita.

Conclusão

Neste artigo, aprendemos como preencher os formulários XFA sem usar o Adobe Writer. Também vimos como ler o formulário XFA preenchido programaticamente. Além disso, você pode aprender mais sobre Aspose.PDF para .NET API usando a documentação. Em caso de qualquer ambiguidade, não hesite em contactar-nos no fórum.

Veja também