Extrair AcroForm - Extrair Dados de Formulário de PDF em C#

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

Extrair dados do formulário

Obter Valores de Todos os Campos do Documento PDF

Para obter valores de todos os campos em um documento PDF, você precisa navegar por todos os campos do formulário e, em seguida, obter o valor usando a propriedade Value. Obtenha cada campo da coleção Form, no tipo de campo base chamado Field e acesse sua propriedade Value.

Os seguintes trechos de código C# mostram como obter os valores de todos os campos de um documento PDF.

// For complete examples and data files, visit https://github.com/aspose-pdf/Aspose.PDF-for-.NET
private static void GetValuesFromFields()
{
    // The path to the documents directory
    var dataDir = RunExamples.GetDataDir_AsposePdf_Forms();

    // Open PDF document
    using (var document = new Aspose.Pdf.Document(dataDir + "GetValuesFromAllFields.pdf"))
    {
        // Get values from all fields
        foreach (Aspose.Pdf.Forms.Field formField in document.Form)
        {
            Console.WriteLine("Field Name : {0} ", formField.PartialName);
            Console.WriteLine("Value : {0} ", formField.Value);
        }
    }
}

Obter Valor de um Campo Individual do Documento PDF

A propriedade Value do campo de formulário permite que você obtenha o valor de um campo específico. Para obter o valor, obtenha o campo de formulário da coleção Form do objeto Document. Este exemplo em C# seleciona um TextBoxField e recupera seu valor usando a propriedade Value.

// For complete examples and data files, visit https://github.com/aspose-pdf/Aspose.PDF-for-.NET
private static void GetValueFromField()
{
    // The path to the documents directory
    var dataDir = RunExamples.GetDataDir_AsposePdf_Forms();

    // Open PDF document
    using (var document = new Aspose.Pdf.Document(dataDir + "GetValueFromField.pdf"))
    {
        // Get a field
        if (document.Form["textbox1"] is Aspose.Pdf.Forms.TextBoxField textBoxField)
        {
            // Get field value
            Console.WriteLine("PartialName : {0} ", textBoxField.PartialName);
            Console.WriteLine("Value : {0} ", textBoxField.Value);
        }
    }
}

Para obter a URL do botão de envio, use as seguintes linhas de código.

// For complete examples and data files, visit https://github.com/aspose-pdf/Aspose.PDF-for-.NET
private static void GetSubmitFormActionUrl()
{
    // The path to the documents directory
    var dataDir = RunExamples.GetDataDir_AsposePdf_Forms();

    // Open PDF document
    using (var document = new Aspose.Pdf.Document(dataDir + "GetValueFromField.pdf"))
    {
        // Get the SubmitFormAction from the form field
        if (document.Form[1].OnActivated is Aspose.Pdf.Annotations.SubmitFormAction act)
        {
            // Output the URL of the SubmitFormAction
            Console.WriteLine(act.Url.Name);
        }
    }
}

Obter Campos de Formulário de uma Região Específica do Arquivo PDF

Às vezes, você pode saber onde em um documento um campo de formulário está, mas não ter seu nome. Por exemplo, se tudo o que você tem é um esquema de um formulário impresso. Com a biblioteca Aspose.PDF for .NET, isso não é um problema. Você pode descobrir quais campos estão em uma determinada região de um arquivo PDF. Para obter campos de formulário de uma região específica de um arquivo PDF:

  1. Abra o arquivo PDF usando o objeto Document.
  2. Obtenha o formulário da coleção Forms do documento.
  3. Especifique a região retangular e passe-a para o método GetFieldsInRect do objeto Form. Uma coleção de Fields é retornada.
  4. Use isso para manipular os campos.

O seguinte trecho de código C# mostra como obter campos de formulário em uma região retangular específica de um arquivo PDF.

// For complete examples and data files, visit https://github.com/aspose-pdf/Aspose.PDF-for-.NET
private static void GetFieldsFromRegion()
{
    // The path to the documents directory
    var dataDir = RunExamples.GetDataDir_AsposePdf_Forms();

    // Open PDF document
    using (var document = new Aspose.Pdf.Document(dataDir + "GetFieldsFromRegion.pdf"))
    {
        // Create rectangle object to get fields in that area
        var rectangle = new Aspose.Pdf.Rectangle(35, 30, 500, 500);

        // Get the PDF form
        var form = document.Form;

        // Get fields in the rectangular area
        var fields = form.GetFieldsInRect(rectangle);

        // Display Field names and values
        foreach (var field in fields)
        {
            // Display image placement properties for all placements
            Console.Out.WriteLine("Field Name: " + field.FullName + "-" + "Field Value: " + field.Value);
        }
    }
}