Extrair Dados AcroForm usando C++
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 então obter o valor utilizando a propriedade Value. Obtenha cada campo da coleção Form, no tipo de campo base chamado Field e acesse sua propriedade Value.
Os trechos de código a seguir mostram como obter os valores de todos os campos de um documento PDF.
using namespace System;
using namespace Aspose::Pdf;
using namespace Aspose::Pdf::Forms;
void ExtractDataFromForm()
{
String _dataDir("C:\\Samples\\");
// Abrir documento
auto document = MakeObject<Document>(_dataDir + u"GetValuesFromAllFields.pdf");
// Obter valores de todos os campos
for(auto wa : document->get_Form())
{
auto formField = System::DynamicCast<Aspose::Pdf::Forms::Field>(wa);
Console::WriteLine(u"Nome do Campo : {0} ", formField->get_PartialName());
Console::WriteLine(u"Valor : {0} ", formField->get_Value());
}
}
Obter Valor de um Campo Individual de 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 seleciona um TextBoxField e recupera seu valor usando a propriedade Value.
O trecho de código a seguir mostra como obter os valores dos campos individuais em um documento PDF.
void GetValueFromIndividualField(){
String _dataDir("C:\\Samples\\");
// Abrir documento
auto document = MakeObject<Document>(_dataDir + u"GetValueFromField.pdf");
// Obter um campo
auto textBoxField = System::DynamicCast<TextBoxField>(document->get_Form()->idx_get(u"textbox1"));
// Obter valor do campo
Console::WriteLine(u"PartialName : {0} ", textBoxField->get_PartialName());
Console::WriteLine(u"Value : {0} ", textBoxField->get_Value());
}
Para obter o URL do botão de envio, use as seguintes linhas de código.
void GetSubmitButtonURL()
{
String _dataDir("C:\\Samples\\");
// Open document
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());
}
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 o nome dele. Por exemplo, se tudo o que você tem para prosseguir é um esquema de um formulário impresso. Com Aspose.PDF para C++, 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:
- Abra o arquivo PDF usando o objeto Document.
- Crie um objeto retângulo para obter campos nessa área
- Obtenha o formulário da coleção Forms do documento.
- Exiba os nomes e valores dos Campos
O seguinte trecho de código mostra como obter campos de formulário em uma região retangular específica de um arquivo PDF.
```cpp
void GetFormFieldsFromSpecificRegion()
{
String _dataDir("C:\\Samples\\");
// Abrir arquivo pdf
auto document = MakeObject<Aspose::Pdf::Document>(_dataDir + u"GetFieldsFromRegion.pdf");
// Criar objeto retângulo para obter campos nessa área
auto rectangle = MakeObject<Aspose::Pdf::Rectangle>(35, 30, 500, 500);
// Obter campos na área retangular
auto fields = document->get_Form()->GetFieldsInRect(rectangle);
// Exibir nomes e valores dos campos
for(auto field : fields)
{
// Exibir propriedades de posicionamento de imagem para todos os posicionamentos
Console::WriteLine(u"Nome do Campo: {0} - Valor do Campo: {1}", field->get_FullName(), field->get_Value());
}
}