Извлечение AcroForm — извлечение данных формы из PDF в C#

Следующий фрагмент кода также работает с библиотекой Aspose.PDF.Drawing.

Извлечение данных из формы

Получение значений из всех полей PDF-документа

Чтобы получить значения из всех полей в PDF-документе, вам нужно пройти по всем полям формы, а затем получить значение с помощью свойства Value. Получите каждое поле из коллекции Form в базовом типе поля Field и получите доступ к его свойству Value.

В следующих фрагментах кода на C# показано, как получить значения всех полей из 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);
        }
    }
}

Получить значение из отдельного поля PDF-документа

Свойство Value поля формы позволяет получить значение определённого поля. Чтобы получить значение, извлеките поле формы из коллекции Form объекта Document. В этом примере на C# выбирается TextBoxField и извлекается его значение с помощью свойства 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);
        }
    }
}

Чтобы получить URL-адрес кнопки отправки, используйте следующие строки кода.

// 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);
        }
    }
}

Получение полей формы из определённой области PDF-файла

Иногда вы можете знать, где в документе находится поле формы, но не знаете его имени. Например, если всё, что у вас есть, это схема печатной формы. С Aspose.PDF for .NET это не проблема. Вы можете узнать, какие поля находятся в заданном регионе PDF-файла. Чтобы получить поля формы из определённой области PDF-файла:

  1. Откройте PDF-файл с помощью объекта Document.
  2. Получите форму из коллекции Forms документа.
  3. Укажите прямоугольную область и передайте её методу GetFieldsInRect объекта Form. Возвращается коллекция Fields.
  4. Используйте её для управления полями.

В следующем фрагменте кода на C# показано, как получить поля формы в определённой прямоугольной области 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);
        }
    }
}