Créer des AcroForms en utilisant C++
Ajouter un champ de formulaire dans un document PDF
La classe Document fournit une collection nommée Form qui aide à gérer les champs de formulaire dans un document PDF.
Pour ajouter un champ de formulaire :
- Créez le champ de formulaire que vous souhaitez ajouter.
- Appelez la méthode add de la collection Form.
Cet exemple montre comment ajouter un TextBoxField. Vous pouvez ajouter n’importe quel champ de formulaire en utilisant la même approche :
- Tout d’abord, créez un objet champ et définissez ses propriétés.
- Ensuite, ajoutez le champ à la collection Form.
Ajouter un TextBoxField
Un champ de texte est un élément de formulaire qui permet à un destinataire de saisir du texte dans votre formulaire. Cela serait utilisé chaque fois que vous souhaitez permettre à l’utilisateur de taper ce qu’il veut.
Les extraits de code suivants montrent comment ajouter un TextBoxField à un document PDF.
using namespace System;
using namespace Aspose::Pdf;
using namespace Aspose::Pdf::Forms;
using namespace Aspose::Pdf::Annotations;
void AddingTextBoxField()
{
String _dataDir("C:\\Samples\\");
// Ouvrir le document
auto document = MakeObject<Document>(_dataDir + u"TextField.pdf");
// Créer un champ
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"Text Box");
// 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());
// Ajouter le champ au document
document->get_Form()->Add(textBoxField, 1);
// Enregistrer le PDF modifié
document->Save(_dataDir + u"TextBox_out.pdf");
}
Ajout de RadioButtonField
Un RadioButton est le plus souvent utilisé pour des questions à choix multiples, dans le scénario où une seule réponse peut être sélectionnée.
Les extraits de code suivants montrent comment ajouter RadioButtonField dans un document PDF.
void AddingRadioButtonField()
{
String _dataDir("C:\\Samples\\");
// Ouvrir le document
auto document = MakeObject<Document>();
// Ajouter une page au fichier PDF
document->get_Pages()->Add();
// Instancier un objet RadioButtonField avec le numéro de page comme argument
auto radio = MakeObject<RadioButtonField>(document->get_Pages()->idx_get(1));
// Ajouter la première option de bouton radio et spécifier également son origine à l'aide d'un objet Rectangle
radio->AddOption(u"Option 1", MakeObject<Rectangle>(0, 0, 20, 20));
// Ajouter la deuxième option de bouton radio
radio->AddOption(u"Option 2", MakeObject<Rectangle>(20, 20, 40, 40));
// Ajouter le bouton radio à l'objet form de l'objet Document
document->get_Form()->Add(radio,1);
// Enregistrer le fichier PDF
document->Save(_dataDir + u"RadioButton_out.pdf");
}
Le snippet de code suivant montre les étapes pour ajouter RadioButtonField avec trois options et les placer à l’intérieur des cellules du tableau.
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);
// Enregistrer le fichier PDF
document->Save(_dataDir + u"RadioButtonWithOptions_out.pdf");
}
Ajout de légende à RadioButtonField
Le code suivant montre comment ajouter une légende qui sera associée à RadioButtonField:
void AddingCaptionToRadioButtonField()
{
String _dataDir("C:\\Samples\\");
auto document = MakeObject<Document>();
// Charger le formulaire PDF source
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"Yes");
fieldoption->set_PartialName (u"Yesname");
auto updatedFragment = MakeObject<Aspose::Pdf::Text::TextFragment>(u"test123");
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);
// Créer un objet TextParagraph
auto par = MakeObject<Aspose::Pdf::Text::TextParagraph>();
// Définir la position du paragraphe
par->set_Position(MakeObject<Aspose::Pdf::Text::Position>(field0->get_Rect()->get_LLX(), field0->get_Rect()->get_LLY() + updatedFragment->get_TextState()->get_FontSize()));
// Spécifier le mode de retour à la ligne
par->get_FormattingOptions()->set_WrapMode(Aspose::Pdf::Text::TextFormattingOptions::WordWrapMode::ByWords);
// Ajouter un nouveau TextFragment au paragraphe
par->AppendLine(updatedFragment);
// Ajouter le TextParagraph en utilisant 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");
}
Ajouter un champ ComboBox
Une Combo Box est un champ de formulaire qui ajoutera un menu déroulant à votre document.
Les extraits de code suivants montrent comment ajouter un champ ComboBox dans un document PDF.
void AddingComboBoxField()
{
String _dataDir("C:\\Samples\\");
// Créer un objet Document
auto document = MakeObject<Document>();
// Ajouter une page à l'objet document
document->get_Pages()->Add();
// Instancier l'objet Champ ComboBox
auto combo = MakeObject<ComboBoxField>(document->get_Pages()->idx_get(1),
MakeObject<Rectangle>(100, 600, 150, 616));
// Ajouter une option à la ComboBox
combo->AddOption(u"Red");
combo->AddOption(u"Yellow");
combo->AddOption(u"Green");
combo->AddOption(u"Blue");
// Ajouter l'objet combo box à la collection de champs de formulaire de l'objet document
document->get_Form()->Add(combo);
// Enregistrer le document PDF
document->Save(_dataDir + u"ComboBox_out.pdf");
}
Ajouter une info-bulle au formulaire
La classe Document fournit une collection nommée Form qui gère les champs de formulaire dans un document PDF. Pour ajouter une info-bulle à un champ de formulaire, utilisez la classe Field AlternateName. Adobe Acrobat utilise le « nom alternatif » comme info-bulle de champ.
Les extraits de code suivants montrent comment ajouter une info-bulle à un champ de formulaire avec C++.
void AddTooltipToFormField()
{
String _dataDir("C:\\Samples\\");
// Charger le formulaire PDF source
auto document = new Document(_dataDir + u"AddTooltipToField.pdf");
// Définir l'info-bulle pour le champ texte
//(doc.Form["textbox1"] as Field).AlternateName = "Texte de l'info-bulle";
// Enregistrer le document mis à jour
document->Save(_dataDir + u"AddTooltipToField_out.pdf");
}