Cree, rellene o edite formularios PDF rellenables con C++

Con la llegada de las computadoras e Internet, mucha información se captura digitalmente. Diferentes empresas propusieron soluciones para hacer este proceso más eficiente. Una de esas soluciones son los formularios PDF rellenables. Los formularios PDF son una opción popular que facilita la captura de información digitalmente. Los formularios PDF se pueden usar para capturar datos de encuestas o como formularios de admisión. A la luz de esto, este artículo le enseñará cómo crear, completar y editar formularios PDF rellenables usando C++.

API de C++ para crear, completar y editar formularios PDF rellenables

Aspose.PDF for C++ es una biblioteca de C++ que le permite crear, leer y actualizar documentos PDF. Además, la API admite la creación, el llenado y la edición de formularios PDF rellenables. Puede instalar la API a través de NuGet o descargarla directamente desde la sección descargas.

PM> Install-Package Aspose.PDF.Cpp

Cree formularios PDF rellenables usando C++

En este ejemplo, crearemos un formulario desde cero con dos cuadros de texto y un botón de opción. Sin embargo, un cuadro de texto es de varias líneas y el otro es de una sola línea. Los siguientes son los pasos para crear un formulario en un archivo PDF.

El siguiente código de ejemplo muestra cómo crear un formulario en un archivo PDF usando C++.

// Crear una instancia de la clase Document
auto pdfDocument = MakeObject<Document>();

// Agregar una página en blanco al documento
System::SharedPtr<Page> page = pdfDocument->get_Pages()->Add();

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

// Crear un campo de cuadro de texto
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);

// Crear un campo de cuadro de texto
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()));

// Agregar TextBoxField al formulario
pdfDocument->get_Form()->Add(nameBox, 1);
pdfDocument->get_Form()->Add(mrnBox, 1);

// crear una tabla
System::SharedPtr<Table> table = MakeObject<Table>();

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

// Agregar la tabla a la página
page->get_Paragraphs()->Add(table);

// Crear filas y columnas
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();

// Crear un campo de botón de radio
System::SharedPtr<RadioButtonField> rf = MakeObject<RadioButtonField>(page);

rf->set_PartialName(u"radio");

// Agregue el RadioButtonField al formulario
pdfDocument->get_Form()->Add(rf, 1);

// Crear opciones de botón de opción
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);

// Agregue las opciones al 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);

// Agregar las opciones a las celdas de la tabla
c1->get_Paragraphs()->Add(opt1);
c2->get_Paragraphs()->Add(opt2);


// Guarde el archivo de salida
pdfDocument->Save(u"OutputDirectory\\Fillable_PDF_Form_Out.pdf");
Imagen del archivo PDF generado por el código de muestra

Imagen del archivo PDF generado por el código de muestra

Rellene un formulario existente en un archivo PDF utilizando C++

En este ejemplo, usaremos el archivo generado en el ejemplo anterior. Cargaremos el archivo usando la clase Document y llenaremos sus campos. Los siguientes son los pasos para completar los campos de un formulario PDF existente.

El siguiente código de ejemplo muestra cómo llenar un formulario existente en un archivo PDF usando C++.

// Cargue el archivo PDF
auto pdfDocument = MakeObject<Document>(u"SourceDirectory\\Fillable_PDF_Form.pdf");

// Recuperar los campos del cuadro 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"));

// Establecer el valor de los campos del cuadro 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 el campo del botón de opción
System::SharedPtr<RadioButtonField> radioField = System::DynamicCast<RadioButtonField>(pdfDocument->get_Form()->idx_get(u"radio"));

// Establecer el valor del campo del botón de opción
radioField->set_Selected(1);

// Guarde el archivo de salida
pdfDocument->Save(u"OutputDirectory\\Fill_PDF_Form_Field_Out.pdf");
Imagen del archivo PDF generado por el código de muestra

Imagen del archivo PDF generado por el código de muestra

Modificar el valor de un campo de formulario en un formulario PDF usando C++

Con Aspose.PDF for C++, también podemos modificar el valor de un campo previamente llenado. En este ejemplo, usaremos el archivo generado en el ejemplo anterior y modificaremos el valor del primer TextBoxField. Para lograr esto, siga los pasos que se indican a continuación.

El siguiente código de ejemplo muestra cómo modificar el valor de un campo en un formulario PDF usando C++.

// Cargue el archivo PDF
auto pdfDocument = MakeObject<Document>(u"SourceDirectory\\Fill_PDF_Form_Field.pdf");

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

// Actualizar el valor de TextBoxField
textBoxField->set_Value(u"Changed Value");

// Marque TextBoxField como de solo lectura
textBoxField->set_ReadOnly(true);

// Guarde el archivo de salida
pdfDocument->Save(u"OutputDirectory\\Modify_Form_Field_out.pdf");
Imagen del archivo PDF generado por el código de muestra

Imagen del archivo PDF generado por el código de muestra

Eliminar un campo de formulario de un formulario PDF existente usando C++

La API también le permite eliminar campos de formulario de formularios PDF existentes. Los siguientes son los pasos para eliminar un campo de formulario de un formulario PDF.

El siguiente código de ejemplo muestra cómo eliminar un campo de formulario de un formulario PDF existente mediante C++.

// Cargue el archivo PDF
auto pdfDocument = MakeObject<Document>(u"SourceDirectory\\Fill_PDF_Form_Field.pdf");

// Eliminar el campo
pdfDocument->get_Form()->Delete(u"nameBox1");

// Guarde el archivo de salida
pdfDocument->Save(u"OutputDirectory\\Delete_Form_Field_out.pdf");
Imagen del archivo PDF generado por el código de muestra

Imagen del archivo PDF generado por el código de muestra

Obtenga una licencia gratis

Puede probar la API sin limitaciones de evaluación solicitando una licencia temporal gratuita.

Conclusión

En este artículo, ha aprendido a crear formularios en archivos PDF utilizando C++. Además, ha aprendido a rellenar y modificar campos existentes en formularios PDF. También ha visto cómo eliminar un campo de formulario de un formulario PDF utilizando Aspose.PDF for C++. La API proporciona un montón de funciones adicionales para trabajar con archivos PDF que puede explorar en detalle consultando la documentación oficial. Si tiene preguntas sobre cualquier aspecto de la API, no dude en comunicarse con nosotros en nuestro foro de soporte gratuito.

Ver también