Crie, preencha ou edite formulários PDF preenchíveis com C++

Com o advento dos computadores e da internet, muitas informações são capturadas digitalmente. Diferentes empresas surgiram com soluções para tornar esse processo mais eficiente. Uma dessas soluções são os formulários PDF preenchíveis. Os formulários PDF são uma escolha popular que facilita a captura digital de informações. Formulários PDF podem ser usados para capturar dados de pesquisas ou como formulários de admissão. À luz disso, este artigo ensinará como criar, preencher e editar formulários PDF preenchíveis usando C++.

API C++ para criar, preencher e editar formulários PDF preenchíveis

Aspose.PDF for C++ é uma biblioteca C++ que permite criar, ler e atualizar documentos PDF. Além disso, a API suporta a criação, preenchimento e edição de formulários PDF preenchíveis. Você pode instalar a API por meio do NuGet ou baixá-la diretamente da seção downloads.

PM> Install-Package Aspose.PDF.Cpp

Crie formulários PDF preenchíveis usando C++

Neste exemplo, criaremos um formulário do zero com duas caixas de texto e um botão de opção. No entanto, uma caixa de texto é de várias linhas e a outra é de uma única linha. A seguir estão as etapas para criar um formulário em um arquivo PDF.

O código de exemplo a seguir mostra como criar um formulário em um arquivo PDF usando C++.

// Crie uma instância da classe Document
auto pdfDocument = MakeObject<Document>();

// Adicionar uma página em branco ao documento
System::SharedPtr<Page> page = pdfDocument->get_Pages()->Add();

System::SharedPtr<Aspose::Pdf::Rectangle> rectangle1 = MakeObject<Aspose::Pdf::Rectangle>(275, 740, 440, 770);

// Criar um TextBoxField
System::SharedPtr<TextBoxField> nameBox = MakeObject<TextBoxField>(pdfDocument, rectangle1);

nameBox->set_PartialName(u"nameBox1");
nameBox->get_DefaultAppearance()->set_FontSize(10);
nameBox->set_Multiline(true);

System::SharedPtr<Border> nameBorder = MakeObject<Border>(nameBox);

nameBorder->set_Width(1);
nameBox->set_Border(nameBorder);
nameBox->get_Characteristics()->set_Border(System::Drawing::Color::get_Black());
nameBox->set_Color(Aspose::Pdf::Color::FromRgb(System::Drawing::Color::get_Red()));

System::SharedPtr<Aspose::Pdf::Rectangle> rectangle2 = MakeObject<Aspose::Pdf::Rectangle>(275, 718, 440, 738);

// Criar um TextBoxField
System::SharedPtr<TextBoxField> mrnBox = MakeObject<TextBoxField>(pdfDocument, rectangle2);

mrnBox->set_PartialName(u"Box1");
mrnBox->get_DefaultAppearance()->set_FontSize(10);

System::SharedPtr<Border> mrnBorder = MakeObject<Border>(mrnBox);

mrnBox->set_Width(165);
mrnBox->set_Border(mrnBorder);
mrnBox->get_Characteristics()->set_Border(System::Drawing::Color::get_Black());
mrnBox->set_Color(Aspose::Pdf::Color::FromRgb(System::Drawing::Color::get_Red()));

// Adicione TextBoxField ao formulário
pdfDocument->get_Form()->Add(nameBox, 1);
pdfDocument->get_Form()->Add(mrnBox, 1);

// Criar uma tabela
System::SharedPtr<Table> table = MakeObject<Table>();

table->set_Left(200);
table->set_Top(300);
table->set_ColumnWidths(u"120");

// Adicione a tabela à página
page->get_Paragraphs()->Add(table);

// Criar linhas e colunas
System::SharedPtr<Row> r1 = table->get_Rows()->Add();
System::SharedPtr<Row> r2 = table->get_Rows()->Add();
System::SharedPtr<Cell> c1 = r1->get_Cells()->Add();
System::SharedPtr<Cell> c2 = r2->get_Cells()->Add();

// Criar um RadioButtonField
System::SharedPtr<RadioButtonField> rf = MakeObject<RadioButtonField>(page);

rf->set_PartialName(u"radio");

// Adicione o RadioButtonField ao formulário
pdfDocument->get_Form()->Add(rf, 1);

// Criar opções de botão de opção
System::SharedPtr<RadioButtonOptionField> opt1 = MakeObject<RadioButtonOptionField>();
System::SharedPtr<RadioButtonOptionField> opt2 = MakeObject<RadioButtonOptionField>();

opt1->set_OptionName(u"Yes");
opt2->set_OptionName(u"No");

opt1->set_Width(15);
opt1->set_Height(15);

opt2->set_Width(15);
opt2->set_Height(15);

// Adicione as opções ao RadioButtonField
rf->Add(opt1);
rf->Add(opt2);

System::SharedPtr<Border> opt1Border = MakeObject<Border>(opt1);

opt1->set_Border(opt1Border);
opt1->get_Border()->set_Width(1);
opt1->get_Border()->set_Style(BorderStyle::Solid);
opt1->get_Characteristics()->set_Border(System::Drawing::Color::get_Black());
opt1->get_DefaultAppearance()->set_TextColor(System::Drawing::Color::get_Red());

System::SharedPtr<TextFragment> opt1Fragment = MakeObject<TextFragment>(u"Yes");

opt1->set_Caption(opt1Fragment);

System::SharedPtr<Border> opt2Border = MakeObject<Border>(opt2);

opt2->set_Border(opt2Border);
opt2->get_Border()->set_Width(1);
opt2->get_Border()->set_Style(BorderStyle::Solid);
opt2->get_Characteristics()->set_Border(System::Drawing::Color::get_Black());
opt2->get_DefaultAppearance()->set_TextColor(System::Drawing::Color::get_Red());

System::SharedPtr<TextFragment> opt2Fragment = MakeObject<TextFragment>(u"No");

opt2->set_Caption(opt2Fragment);

// Adicione as opções às células da tabela
c1->get_Paragraphs()->Add(opt1);
c2->get_Paragraphs()->Add(opt2);


// Salve o arquivo de saída
pdfDocument->Save(u"OutputDirectory\\Fillable_PDF_Form_Out.pdf");
Imagem do arquivo PDF gerado pelo código de exemplo

Imagem do arquivo PDF gerado pelo código de exemplo

Preencha um formulário existente em um arquivo PDF usando C++

Neste exemplo, usaremos o arquivo gerado no exemplo anterior. Vamos carregar o arquivo usando a classe Document e preencher seus campos. A seguir estão as etapas para preencher os campos de um formulário PDF existente.

O código de exemplo a seguir mostra como preencher um formulário existente em um arquivo PDF usando C++.

// Carregue o arquivo PDF
auto pdfDocument = MakeObject<Document>(u"SourceDirectory\\Fillable_PDF_Form.pdf");

// Recuperar os campos da caixa de texto
System::SharedPtr<TextBoxField> textBoxField1 = System::DynamicCast<TextBoxField>(pdfDocument->get_Form()->idx_get(u"nameBox1"));
System::SharedPtr<TextBoxField> textBoxField2 = System::DynamicCast<TextBoxField>(pdfDocument->get_Form()->idx_get(u"Box1"));

// Defina o valor dos campos da caixa de texto
textBoxField1->set_Value(u"A quick brown fox jumped over the lazy dog.");
textBoxField2->set_Value(u"A quick brown fox jumped over the lazy dog.");

// Recuperar o campo do botão de opção
System::SharedPtr<RadioButtonField> radioField = System::DynamicCast<RadioButtonField>(pdfDocument->get_Form()->idx_get(u"radio"));

// Defina o valor do campo do botão de opção
radioField->set_Selected(1);

// Salve o arquivo de saída
pdfDocument->Save(u"OutputDirectory\\Fill_PDF_Form_Field_Out.pdf");
Imagem do arquivo PDF gerado pelo código de exemplo

Imagem do arquivo PDF gerado pelo código de exemplo

Modificar o valor de um campo de formulário em um formulário PDF usando C++

Com Aspose.PDF para C++, também podemos modificar o valor de um campo previamente preenchido. Neste exemplo, usaremos o arquivo gerado no exemplo anterior e modificaremos o valor do primeiro TextBoxField. Para conseguir isso, siga os passos abaixo.

O código de exemplo a seguir mostra como modificar o valor de um campo em um formulário PDF usando C++.

// Carregue o arquivo PDF
auto pdfDocument = MakeObject<Document>(u"SourceDirectory\\Fill_PDF_Form_Field.pdf");

// Recupere o TextBoxField
System::SharedPtr<TextBoxField> textBoxField = System::DynamicCast<TextBoxField>(pdfDocument->get_Form()->idx_get(u"nameBox1"));

// Atualizar o valor do TextBoxField
textBoxField->set_Value(u"Changed Value");

// Marcar o TextBoxField como somente leitura
textBoxField->set_ReadOnly(true);

// Salve o arquivo de saída
pdfDocument->Save(u"OutputDirectory\\Modify_Form_Field_out.pdf");
Imagem do arquivo PDF gerado pelo código de exemplo

Imagem do arquivo PDF gerado pelo código de exemplo

Excluir um campo de formulário de um formulário PDF existente usando C++

A API também permite excluir campos de formulários de formulários PDF existentes. A seguir estão as etapas para excluir um campo de formulário de um formulário PDF.

O código de exemplo a seguir mostra como excluir um campo de formulário de um formulário PDF existente usando C++.

// Carregue o arquivo PDF
auto pdfDocument = MakeObject<Document>(u"SourceDirectory\\Fill_PDF_Form_Field.pdf");

// Excluir o campo
pdfDocument->get_Form()->Delete(u"nameBox1");

// Salve o arquivo de saída
pdfDocument->Save(u"OutputDirectory\\Delete_Form_Field_out.pdf");
Imagem do arquivo PDF gerado pelo código de exemplo

Imagem do arquivo PDF gerado pelo código de exemplo

Obtenha uma licença gratuita

Você pode experimentar a API sem limitações de avaliação solicitando uma licença temporária gratuita.

Conclusão

Neste artigo, você aprendeu como criar formulários em arquivos PDF usando C++. Além disso, você aprendeu a preencher e modificar campos existentes em formulários PDF. Você também viu como remover um campo de formulário de um formulário PDF usando Aspose.PDF para C++ API. A API fornece vários recursos adicionais para trabalhar com arquivos PDF que você pode explorar em detalhes consultando a documentação oficial. Se você tiver dúvidas sobre qualquer aspecto da API, sinta-se à vontade para entrar em contato conosco em nosso fórum de suporte gratuito.

Veja também