Извлечение данных AcroForm с использованием C++
Получение значений из всех полей PDF-документа
Чтобы получить значения из всех полей в PDF-документе, вам нужно пройтись по всем полям формы и затем получить значение, используя свойство Value. Получите каждое поле из коллекции Form, в базовом типе поля, называемом Field, и получите доступ к его свойству Value.
Следующие фрагменты кода показывают, как получить значения всех полей из PDF-документа.
using namespace System;
using namespace Aspose::Pdf;
using namespace Aspose::Pdf::Forms;
void ExtractDataFromForm()
{
String _dataDir("C:\\Samples\\");
// Открыть документ
auto document = MakeObject<Document>(_dataDir + u"GetValuesFromAllFields.pdf");
// Получить значения из всех полей
for(auto wa : document->get_Form())
{
auto formField = System::DynamicCast<Aspose::Pdf::Forms::Field>(wa);
Console::WriteLine(u"Имя поля : {0} ", formField->get_PartialName());
Console::WriteLine(u"Значение : {0} ", formField->get_Value());
}
}
Получение значения из отдельного поля PDF-документа
Свойство Value поля формы позволяет получить значение конкретного поля. Чтобы получить значение, получите поле формы из коллекции Form объекта Document. В этом примере выбирается TextBoxField и извлекается его значение с помощью свойства Value.
Следующий фрагмент кода показывает, как получить значения отдельных полей в PDF-документе.
void GetValueFromIndividualField(){
String _dataDir("C:\\Samples\\");
// Открыть документ
auto document = MakeObject<Document>(_dataDir + u"GetValueFromField.pdf");
// Получить поле
auto textBoxField = System::DynamicCast<TextBoxField>(document->get_Form()->idx_get(u"textbox1"));
// Получить значение поля
Console::WriteLine(u"PartialName : {0} ", textBoxField->get_PartialName());
Console::WriteLine(u"Value : {0} ", textBoxField->get_Value());
}
Чтобы получить URL кнопки отправки, используйте следующие строки кода.
void GetSubmitButtonURL()
{
String _dataDir("C:\\Samples\\");
// Открыть документ
auto document = MakeObject<Document>(_dataDir + u"GetValueFromField.pdf");
auto act = System::DynamicCast<Aspose::Pdf::Annotations::SubmitFormAction>(document->get_Form()->idx_get(1)->get_OnActivated());
if (act != nullptr)
Console::WriteLine(act->get_Url()->get_Name());
}
Получение полей формы из определенной области PDF файла
Иногда вы можете знать, где в документе находится поле формы, но не знать его имени. Например, если у вас есть только схема печатной формы. С Aspose.PDF для C++ это не проблема. Вы можете узнать, какие поля находятся в заданной области PDF файла. Чтобы получить поля формы из определенной области PDF файла:
- Откройте PDF файл, используя объект Document.
- Создайте объект прямоугольника, чтобы получить поля в этой области
- Получите форму из коллекции Forms документа.
- Отобразите имена и значения полей
Следующий фрагмент кода показывает, как получить поля формы в определенной прямоугольной области PDF файла.
```cpp
void GetFormFieldsFromSpecificRegion()
{
String _dataDir("C:\\Samples\\");
// Открыть PDF файл
auto document = MakeObject<Aspose::Pdf::Document>(_dataDir + u"GetFieldsFromRegion.pdf");
// Создать объект прямоугольника для получения полей в этой области
auto rectangle = MakeObject<Aspose::Pdf::Rectangle>(35, 30, 500, 500);
// Получить поля в прямоугольной области
auto fields = document->get_Form()->GetFieldsInRect(rectangle);
// Отобразить имена и значения полей
for(auto field : fields)
{
// Отобразить свойства размещения изображения для всех размещений
Console::WriteLine(u"Имя поля: {0} - Значение поля: {1}", field->get_FullName(), field->get_Value());
}
}