Criar AcroForms usando C++
Adicionar Campo de Formulário em Documento PDF
A classe Document fornece uma coleção chamada Form que ajuda a gerenciar campos de formulário em um documento PDF.
Para adicionar um campo de formulário:
- Crie o campo de formulário que deseja adicionar.
- Chame o método add da coleção Form.
Este exemplo mostra como adicionar um TextBoxField. Você pode adicionar qualquer campo de formulário usando a mesma abordagem:
- Primeiro, crie um objeto de campo e defina suas propriedades.
- Em seguida, adicione o campo à coleção Form.
Adicionando TextBoxField
Um campo de texto é um elemento de formulário que permite que um destinatário insira texto em seu formulário. Este seria utilizado sempre que você quiser permitir ao usuário a liberdade de digitar o que quiser.
Os seguintes trechos de código mostram como adicionar um TextBoxField a um documento PDF.
using namespace System;
using namespace Aspose::Pdf;
using namespace Aspose::Pdf::Forms;
using namespace Aspose::Pdf::Annotations;
void AddingTextBoxField()
{
String _dataDir("C:\\Samples\\");
// Abrir documento
auto document = MakeObject<Document>(_dataDir + u"TextField.pdf");
// Criar um campo
auto textBoxField = MakeObject<TextBoxField>(document->get_Pages()->idx_get(1), MakeObject<Aspose::Pdf::Rectangle>(100, 200, 300, 300));
textBoxField->set_PartialName (u"textbox1");
textBoxField->set_Value (u"Caixa de Texto");
// TextBoxField.Border = new Border(
auto border = MakeObject<Aspose::Pdf::Annotations::Border>(textBoxField);
border->set_Width(5);
border->set_Dash (MakeObject<Aspose::Pdf::Annotations::Dash>(1, 1));
textBoxField->set_Border(border);
textBoxField->set_Color(Aspose::Pdf::Color::get_Green());
// Adicionar campo ao documento
document->get_Form()->Add(textBoxField, 1);
// Salvar PDF modificado
document->Save(_dataDir + u"TextBox_out.pdf");
}
Adicionando RadioButtonField
Um RadioButton é mais comumente usado para perguntas de múltipla escolha, no cenário onde apenas uma resposta pode ser selecionada.
Os seguintes trechos de código mostram como adicionar RadioButtonField em um documento PDF.
void AddingRadioButtonField()
{
String _dataDir("C:\\Samples\\");
// Abrir documento
auto document = MakeObject<Document>();
// Adicionar uma página ao arquivo PDF
document->get_Pages()->Add();
// Instanciar objeto RadioButtonField com número da página como argumento
auto radio = MakeObject<RadioButtonField>(document->get_Pages()->idx_get(1));
// Adicionar primeira opção de botão de rádio e também especificar sua origem usando o objeto Rectangle
radio->AddOption(u"Option 1", MakeObject<Rectangle>(0, 0, 20, 20));
// Adicionar segunda opção de botão de rádio
radio->AddOption(u"Option 2", MakeObject<Rectangle>(20, 20, 40, 40));
// Adicionar botão de rádio ao objeto de formulário do objeto Document
document->get_Form()->Add(radio,1);
// Salvar o arquivo PDF
document->Save(_dataDir + u"RadioButton_out.pdf");
}
O trecho de código a seguir mostra as etapas para adicionar RadioButtonField com três opções e colocá-las dentro de células da Tabela.
void AddRadioButtonFieldInsideTableCells()
{
String _dataDir("C:\\Samples\\");
auto document = MakeObject<Document>();
auto page = document->get_Pages()->Add();
auto table = MakeObject<Aspose::Pdf::Table>();
table->set_ColumnWidths(u"120 120 120");
page->get_Paragraphs()->Add(table);
auto r1 = table->get_Rows()->Add();
auto c1 = r1->get_Cells()->Add();
auto c2 = r1->get_Cells()->Add();
auto c3 = r1->get_Cells()->Add();
auto rf = MakeObject<RadioButtonField>(page);
rf->set_PartialName(u"radio");
document->get_Form()->Add(rf, 1);
auto opt1 = MakeObject<RadioButtonOptionField>();
auto opt2 = MakeObject<RadioButtonOptionField>();
auto opt3 = MakeObject<RadioButtonOptionField>();
opt1->set_OptionName(u"Item1");
opt2->set_OptionName(u"Item2");
opt3->set_OptionName(u"Item3");
opt1->set_Width (15);
opt1->set_Height(15);
opt2->set_Width (15);
opt2->set_Height(15);
opt3->set_Width (15);
opt3->set_Height(15);
rf->Add(opt1);
rf->Add(opt2);
rf->Add(opt3);
opt1->set_Border(MakeObject<Border>(opt1));
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());
opt1->set_Caption(MakeObject<Aspose::Pdf::Text::TextFragment>(u"Item1"));
opt2->set_Border(MakeObject<Border>(opt2));
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());
opt2->set_Caption(MakeObject<Aspose::Pdf::Text::TextFragment>(u"Item2"));
opt3->set_Border(MakeObject<Border>(opt3));
opt3->get_Border()->set_Width(1);
opt3->get_Border()->set_Style(BorderStyle::Solid);
opt3->get_Characteristics()->set_Border(System::Drawing::Color::get_Black());
opt3->get_DefaultAppearance()->set_TextColor(System::Drawing::Color::get_Red());
opt3->set_Caption(MakeObject<Aspose::Pdf::Text::TextFragment>(u"Item3"));
c1->get_Paragraphs()->Add(opt1);
c2->get_Paragraphs()->Add(opt2);
c3->get_Paragraphs()->Add(opt3);
// Salvar o arquivo PDF
document->Save(_dataDir + u"RadioButtonWithOptions_out.pdf");
}
Adicionando Legenda ao RadioButtonField
O snippet de código a seguir mostra como adicionar uma legenda que será associada ao RadioButtonField:
void AddingCaptionToRadioButtonField()
{
String _dataDir("C:\\Samples\\");
auto document = MakeObject<Document>();
// Carregar formulário PDF de origem
auto form1 =
MakeObject<Aspose::Pdf::Facades::Form>(_dataDir + u"RadioButtonField.pdf");
auto PDF_Template_PDF_HTML = MakeObject<Document>(_dataDir + u"RadioButtonField.pdf");
for(auto item : form1->get_FieldNames())
{
System::Console::WriteLine(item);
auto radioOptions = form1->GetButtonOptionValues(item);
if (item.Contains(u"radio1"))
{
auto field0 = System::DynamicCast<RadioButtonField>(PDF_Template_PDF_HTML->get_Form()->idx_get(item));
auto fieldoption = MakeObject<RadioButtonOptionField>();
fieldoption->set_OptionName (u"Sim");
fieldoption->set_PartialName (u"Simname");
auto updatedFragment = MakeObject<Aspose::Pdf::Text::TextFragment>(u"teste123");
updatedFragment->get_TextState()->set_Font (Aspose::Pdf::Text::FontRepository::FindFont(u"Arial"));
updatedFragment->get_TextState()->set_FontSize(10);
updatedFragment->get_TextState()->set_LineSpacing(6.32f);
// Criar objeto TextParagraph
auto par = MakeObject<Aspose::Pdf::Text::TextParagraph>();
// Definir posição do parágrafo
par->set_Position(MakeObject<Aspose::Pdf::Text::Position>(field0->get_Rect()->get_LLX(), field0->get_Rect()->get_LLY() + updatedFragment->get_TextState()->get_FontSize()));
// Especificar modo de quebra de linha
par->get_FormattingOptions()->set_WrapMode(Aspose::Pdf::Text::TextFormattingOptions::WordWrapMode::ByWords);
// Adicionar novo TextFragment ao parágrafo
par->AppendLine(updatedFragment);
// Adicionar o TextParagraph usando TextBuilder
auto textBuilder = MakeObject<Aspose::Pdf::Text::TextBuilder>(PDF_Template_PDF_HTML->get_Pages()->idx_get(1));
textBuilder->AppendParagraph(par);
field0->DeleteOption(u"item1");
}
}
PDF_Template_PDF_HTML->Save(_dataDir + u"RadioButtonField_out.pdf");
}
Adicionando campo ComboBox
Um Combo Box é um campo de formulário que adicionará um menu suspenso ao seu documento.
Os seguintes trechos de código mostram como adicionar um campo ComboBox em um documento PDF.
void AddingComboBoxField()
{
String _dataDir("C:\\Samples\\");
// Criar objeto Documento
auto document = MakeObject<Document>();
// Adicionar página ao objeto documento
document->get_Pages()->Add();
// Instanciar objeto Campo ComboBox
auto combo = MakeObject<ComboBoxField>(document->get_Pages()->idx_get(1),
MakeObject<Rectangle>(100, 600, 150, 616));
// Adicionar opção ao ComboBox
combo->AddOption(u"Red");
combo->AddOption(u"Yellow");
combo->AddOption(u"Green");
combo->AddOption(u"Blue");
// Adicionar objeto combo box à coleção de campos de formulário do objeto documento
document->get_Form()->Add(combo);
// Salvar o documento PDF
document->Save(_dataDir + u"ComboBox_out.pdf");
}
Adicionar Tooltip ao Formulário
The Document class fornece uma coleção chamada Form que gerencia campos de formulário em um documento PDF. Para adicionar uma dica de ferramenta a um campo de formulário, use a classe Field AlternateName. O Adobe Acrobat usa o ’nome alternativo’ como dica de ferramenta de campo.
Os trechos de código a seguir mostram como adicionar uma dica de ferramenta a um campo de formulário com C++.
void AddTooltipToFormField()
{
String _dataDir("C:\\Samples\\");
// Carregar formulário PDF de origem
auto document = new Document(_dataDir + u"AddTooltipToField.pdf");
// Definir a dica de ferramenta para o campo de texto
//(doc.Form["textbox1"] as Field).AlternateName = "Text box tool tip";
// Salvar o documento atualizado
document->Save(_dataDir + u"AddTooltipToField_out.pdf");
}