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
- Cree formularios PDF rellenables usando C++
- Rellene un formulario existente en un archivo PDF utilizando C++
- Modificar el valor de un campo de formulario en un formulario PDF usando C++
- Eliminar un campo de formulario de un formulario PDF existente 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.
- Cree una instancia de la clase Document.
- Agregue una página en blanco al documento.
- Cree una instancia de la clase TextBoxField.
- Establezca las propiedades de TextBoxField como FontSize, Color, etc.
- Cree una instancia del segundo TextBoxField y establezca sus propiedades.
- Agregue ambos cuadros de texto al formulario usando Document->getForm()->Add(System::SharedPtr campo, int32t pageNumber) método.
- Crea una tabla.
- Cree una instancia de la clase RadioButtonField.
- Agregue el RadioButton al formulario usando Document->getForm()->Add(System::SharedPtr campo, int32t pageNumber) método.
- Cree dos instancias de la clase RadioButtonOptionField para representar las opciones del botón de radio.
- Establezca OptionName, Width y Height y agregue las opciones al botón de radio usando RadioButtonField->Add(System::SharedPtr const & newItem) método.
- Agregue las opciones del botón de radio a las celdas de la tabla usando Cell->getParagraphs()->Add(System::SharedPtr párrafo) método.
- Guarde el archivo de salida usando el método Document->Save(System::String outputFileName).
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");
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.
- Cargue el archivo PDF utilizando la clase Document.
- Recupere los TextBoxFields usando el método Document->getForm()->idxget(System::String name).
- Establece los valores de ambos TextBoxFields usando el método TextBoxField->setValue(System::String value).
- Recupere el RadioButtonField usando el método Document->getForm()->idxget(System::String name).
- Establezca el valor de RadioButtonField usando el método RadioButtonField->setSelected(int32t value).
- Guarde el archivo de salida usando el método Document->Save(System::String outputFileName).
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");
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.
- Cargue el archivo PDF utilizando la clase Document.
- Recupere el TextBoxField usando el método Document->getForm()->idxget(System::String name).
- Actualice el valor de TextBoxField usando el método TextBoxField->setValue(System::String value).
- Guarde el archivo de salida usando el método Document->Save(System::String outputFileName).
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");
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.
- Cargue el archivo PDF utilizando la clase Document.
- Elimine el campo usando el método Document->getForm()->Delete(System::String fieldName).
- Guarde el archivo de salida usando el método Document->Save(System::String outputFileName).
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");
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.