Créer, remplir ou modifier des formulaires PDF remplissables avec C++

Avec l’avènement des ordinateurs et d’Internet, de nombreuses informations sont saisies numériquement. Différentes entreprises ont proposé des solutions pour rendre ce processus plus efficace. Une de ces solutions est les formulaires PDF à remplir. Les formulaires PDF sont un choix populaire qui facilite la saisie numérique des informations. Les formulaires PDF peuvent être utilisés pour saisir des données d’enquête ou comme formulaires d’admission. À la lumière de cela, cet article vous apprendra comment créer, remplir et modifier des formulaires PDF remplissables à l’aide de C++.

API C++ pour la création, le remplissage et l’édition de formulaires PDF remplissables

Aspose.PDF for C++ est une bibliothèque C++ qui vous permet de créer, lire et mettre à jour des documents PDF. De plus, l’API prend en charge la création, le remplissage et l’édition de formulaires PDF à remplir. Vous pouvez soit installer l’API via NuGet ou la télécharger directement à partir de la section downloads.

PM> Install-Package Aspose.PDF.Cpp

Créer des formulaires PDF remplissables à l’aide de C++

Dans cet exemple, nous allons créer un formulaire à partir de zéro avec deux zones de texte et un bouton radio. Cependant, une zone de texte comporte plusieurs lignes et l’autre une seule ligne. Voici les étapes pour créer un formulaire dans un fichier PDF.

L’exemple de code suivant montre comment créer un formulaire dans un fichier PDF à l’aide de C++.

// Créer une instance de la classe Document
auto pdfDocument = MakeObject<Document>();

// Ajouter une page vierge au document
System::SharedPtr<Page> page = pdfDocument->get_Pages()->Add();

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

// Créer un champ TextBox
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);

// Créer un champ TextBox
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()));

// Ajouter TextBoxField au formulaire
pdfDocument->get_Form()->Add(nameBox, 1);
pdfDocument->get_Form()->Add(mrnBox, 1);

// Créer un tableau
System::SharedPtr<Table> table = MakeObject<Table>();

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

// Ajouter le tableau à la page
page->get_Paragraphs()->Add(table);

// Créer des lignes et des colonnes
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();

// Créer un champ de bouton radio
System::SharedPtr<RadioButtonField> rf = MakeObject<RadioButtonField>(page);

rf->set_PartialName(u"radio");

// Ajouter le RadioButtonField au formulaire
pdfDocument->get_Form()->Add(rf, 1);

// Créer des options de bouton radio
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);

// Ajouter les options au 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);

// Ajouter les options aux cellules du tableau
c1->get_Paragraphs()->Add(opt1);
c2->get_Paragraphs()->Add(opt2);


// Enregistrer le fichier de sortie
pdfDocument->Save(u"OutputDirectory\\Fillable_PDF_Form_Out.pdf");
Image du fichier PDF généré par l'exemple de code

Image du fichier PDF généré par l’exemple de code

Remplir un formulaire existant dans un fichier PDF à l’aide de C++

Dans cet exemple, nous utiliserons le fichier généré dans l’exemple précédent. Nous allons charger le fichier en utilisant la classe Document et remplir ses champs. Voici les étapes pour remplir les champs d’un formulaire PDF existant.

L’exemple de code suivant montre comment remplir un formulaire existant dans un fichier PDF à l’aide de C++.

// Charger le fichier PDF
auto pdfDocument = MakeObject<Document>(u"SourceDirectory\\Fillable_PDF_Form.pdf");

// Récupérer les champs de zone de texte
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"));

// Définir la valeur des champs de la zone de texte
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.");

// Récupérer le champ du bouton radio
System::SharedPtr<RadioButtonField> radioField = System::DynamicCast<RadioButtonField>(pdfDocument->get_Form()->idx_get(u"radio"));

// Définir la valeur du champ du bouton radio
radioField->set_Selected(1);

// Enregistrer le fichier de sortie
pdfDocument->Save(u"OutputDirectory\\Fill_PDF_Form_Field_Out.pdf");
Image du fichier PDF généré par l'exemple de code

Image du fichier PDF généré par l’exemple de code

Modifier la valeur d’un champ de formulaire dans un formulaire PDF à l’aide de C++

Avec Aspose.PDF for C++, nous pouvons également modifier la valeur d’un champ précédemment rempli. Dans cet exemple, nous allons utiliser le fichier généré dans l’exemple précédent et modifier la valeur du premier TextBoxField. Pour y parvenir, veuillez suivre les étapes ci-dessous.

L’exemple de code suivant montre comment modifier la valeur d’un champ dans un formulaire PDF à l’aide de C++.

// Charger le fichier PDF
auto pdfDocument = MakeObject<Document>(u"SourceDirectory\\Fill_PDF_Form_Field.pdf");

// Récupérer le TextBoxField
System::SharedPtr<TextBoxField> textBoxField = System::DynamicCast<TextBoxField>(pdfDocument->get_Form()->idx_get(u"nameBox1"));

// Mettre à jour la valeur de TextBoxField
textBoxField->set_Value(u"Changed Value");

// Marquez le TextBoxField en lecture seule
textBoxField->set_ReadOnly(true);

// Enregistrer le fichier de sortie
pdfDocument->Save(u"OutputDirectory\\Modify_Form_Field_out.pdf");
Image du fichier PDF généré par l'exemple de code

Image du fichier PDF généré par l’exemple de code

Supprimer un champ de formulaire d’un formulaire PDF existant à l’aide de C++

L’API vous permet également de supprimer des champs de formulaire de formulaires PDF existants. Voici les étapes pour supprimer un champ de formulaire d’un formulaire PDF.

L’exemple de code suivant montre comment supprimer un champ de formulaire d’un formulaire PDF existant à l’aide de C++.

// Charger le fichier PDF
auto pdfDocument = MakeObject<Document>(u"SourceDirectory\\Fill_PDF_Form_Field.pdf");

// Supprimer le champ
pdfDocument->get_Form()->Delete(u"nameBox1");

// Enregistrer le fichier de sortie
pdfDocument->Save(u"OutputDirectory\\Delete_Form_Field_out.pdf");
Image du fichier PDF généré par l'exemple de code

Image du fichier PDF généré par l’exemple de code

Obtenez une licence gratuite

Vous pouvez essayer l’API sans limitation d’évaluation en demandant une licence temporaire gratuite.

Conclusion

Dans cet article, vous avez appris à créer des formulaires dans des fichiers PDF à l’aide de C++. De plus, vous avez appris à remplir et à modifier les champs existants dans les formulaires PDF. Vous avez également vu comment supprimer un champ de formulaire d’un formulaire PDF à l’aide de Aspose.PDF for C++. L’API fournit un tas de fonctionnalités supplémentaires pour travailler avec des fichiers PDF que vous pouvez explorer en détail en parcourant la documentation officielle. Si vous avez des questions concernant tout aspect de l’API, n’hésitez pas à nous contacter sur notre forum d’assistance gratuit.

Voir également