С появлением компьютеров и Интернета многие данные передаются в цифровом виде. Различные компании придумали решения, чтобы сделать этот процесс более эффективным. Одним из таких решений являются заполняемые формы PDF. PDF-формы — популярный выбор, который позволяет легко записывать информацию в цифровом виде. PDF-формы могут использоваться для сбора данных опроса или в качестве форм допуска. В свете этого в этой статье вы узнаете, как создавать, заполнять и редактировать заполняемые формы PDF с помощью C++.
- C++ API для создания, заполнения и редактирования заполняемых PDF-форм
- Создавайте заполняемые PDF-формы с помощью C++
- Заполните существующую форму в файле PDF с помощью С++
- Изменить значение поля формы в форме PDF с помощью С++
- Удалить поле формы из существующей формы PDF с помощью С++
C++ API для создания, заполнения и редактирования заполняемых PDF-форм
Aspose.PDF for C++ — это библиотека C++, позволяющая создавать, читать и обновлять PDF-документы. Кроме того, API поддерживает создание, заполнение и редактирование заполняемых PDF-форм. Вы можете либо установить API через NuGet, либо загрузить его напрямую из раздела загрузки.
PM> Install-Package Aspose.PDF.Cpp
Создавайте заполняемые PDF-формы с помощью C++
В этом примере мы создадим форму с нуля с двумя текстовыми полями и одним переключателем. Однако одно текстовое поле является многострочным, а другое — однострочным. Ниже приведены шаги для создания формы в файле PDF.
- Создайте экземпляр класса Document.
- Добавьте в документ пустую страницу.
- Создайте экземпляр класса TextBoxField.
- Задайте свойства TextBoxField, например FontSize, Color и т. д.
- Создайте экземпляр второго TextBoxField и задайте его свойства.
- Добавьте оба текстовых поля в форму с помощью команды Document->getForm()->Add(System::SharedPtr поле, метод int32t pageNumber).
- Создайте таблицу.
- Создайте экземпляр класса RadioButtonField.
- Добавьте RadioButton в форму, используя Document->getForm()->Add(System::SharedPtr поле, метод int32t pageNumber).
- Создайте два экземпляра класса RadioButtonOptionField для представления параметров переключателя.
- Установите OptionName, Width и Height и добавьте параметры к переключателю с помощью RadioButtonField->Add(System::SharedPtr const & newItem).
- Добавьте параметры переключателя в ячейки таблицы с помощью команды Cell->getParagraphs()->Add(System::SharedPtr абзац) метод.
- Сохраните выходной файл с помощью метода Document->Save(System::String outputFileName).
В следующем примере кода показано, как создать форму в файле PDF с помощью C++.
// Создайте экземпляр класса Document
auto pdfDocument = MakeObject<Document>();
// Добавить пустую страницу в документ
System::SharedPtr<Page> page = pdfDocument->get_Pages()->Add();
System::SharedPtr<Aspose::Pdf::Rectangle> rectangle1 = MakeObject<Aspose::Pdf::Rectangle>(275, 740, 440, 770);
// Создайте поле TextBoxField
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);
// Создайте поле TextBoxField
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()));
// Добавьте TextBoxField в форму
pdfDocument->get_Form()->Add(nameBox, 1);
pdfDocument->get_Form()->Add(mrnBox, 1);
// Создать таблицу
System::SharedPtr<Table> table = MakeObject<Table>();
table->set_Left(200);
table->set_Top(300);
table->set_ColumnWidths(u"120");
// Добавьте таблицу на страницу
page->get_Paragraphs()->Add(table);
// Создание строк и столбцов
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();
// Создайте поле RadioButtonField
System::SharedPtr<RadioButtonField> rf = MakeObject<RadioButtonField>(page);
rf->set_PartialName(u"radio");
// Добавьте RadioButtonField в форму
pdfDocument->get_Form()->Add(rf, 1);
// Создать параметры переключателя
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);
// Добавьте параметры в 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);
// Добавьте параметры в ячейки таблицы
c1->get_Paragraphs()->Add(opt1);
c2->get_Paragraphs()->Add(opt2);
// Сохраните выходной файл
pdfDocument->Save(u"OutputDirectory\\Fillable_PDF_Form_Out.pdf");
Заполните существующую форму в файле PDF с помощью С++
В этом примере мы будем использовать файл, созданный в предыдущем примере. Мы загрузим файл с помощью класса Document и заполним его поля. Ниже приведены шаги для заполнения полей существующей формы PDF.
- Загрузите файл PDF с помощью класса Document.
- Получите TextBoxFields с помощью метода Document->getForm()->idxget(System::String name).
- Установите значения обоих TextBoxField с помощью метода TextBoxField->setValue(System::String value).
- Получите RadioButtonField с помощью метода Document->getForm()->idxget(System::String name).
- Установите значение RadioButtonField с помощью метода RadioButtonField->setSelected(int32t value).
- Сохраните выходной файл с помощью метода Document->Save(System::String outputFileName).
В следующем примере кода показано, как заполнить существующую форму в файле PDF с помощью C++.
// Загрузите PDF-файл
auto pdfDocument = MakeObject<Document>(u"SourceDirectory\\Fillable_PDF_Form.pdf");
// Получить поля текстового поля
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"));
// Установите значение полей текстового поля
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.");
// Получить поле переключателя
System::SharedPtr<RadioButtonField> radioField = System::DynamicCast<RadioButtonField>(pdfDocument->get_Form()->idx_get(u"radio"));
// Установите значение поля переключателя
radioField->set_Selected(1);
// Сохраните выходной файл
pdfDocument->Save(u"OutputDirectory\\Fill_PDF_Form_Field_Out.pdf");
Изменить значение поля формы в форме PDF с помощью С++
С помощью Aspose.PDF для C++ мы также можем изменить значение ранее заполненного поля. В этом примере мы будем использовать файл, сгенерированный в предыдущем примере, и изменим значение первого TextBoxField. Для этого выполните шаги, указанные ниже.
- Загрузите файл PDF с помощью класса Document.
- Получите TextBoxField с помощью метода Document->getForm()->idxget(System::String name).
- Обновите значение TextBoxField с помощью метода TextBoxField->setValue(System::String value).
- Сохраните выходной файл с помощью метода Document->Save(System::String outputFileName).
В следующем примере кода показано, как изменить значение поля в форме PDF с помощью C++.
// Загрузите PDF-файл
auto pdfDocument = MakeObject<Document>(u"SourceDirectory\\Fill_PDF_Form_Field.pdf");
// Получить TextBoxField
System::SharedPtr<TextBoxField> textBoxField = System::DynamicCast<TextBoxField>(pdfDocument->get_Form()->idx_get(u"nameBox1"));
// Обновите значение TextBoxField
textBoxField->set_Value(u"Changed Value");
// Пометить TextBoxField как доступный только для чтения
textBoxField->set_ReadOnly(true);
// Сохраните выходной файл
pdfDocument->Save(u"OutputDirectory\\Modify_Form_Field_out.pdf");
Удалить поле формы из существующей формы PDF с помощью С++
API также позволяет удалять поля форм из существующих форм PDF. Ниже приведены шаги по удалению поля формы из формы PDF.
- Загрузите файл PDF с помощью класса Document.
- Удалите поле с помощью метода Document->getForm()->Delete(System::String fieldName).
- Сохраните выходной файл с помощью метода Document->Save(System::String outputFileName).
В следующем примере кода показано, как удалить поле формы из существующей формы PDF с помощью C++.
// Загрузите PDF-файл
auto pdfDocument = MakeObject<Document>(u"SourceDirectory\\Fill_PDF_Form_Field.pdf");
// Удалить поле
pdfDocument->get_Form()->Delete(u"nameBox1");
// Сохраните выходной файл
pdfDocument->Save(u"OutputDirectory\\Delete_Form_Field_out.pdf");
Получить бесплатную лицензию
Вы можете попробовать API без ограничений на пробную версию, запросив бесплатную временную лицензию.
Вывод
В этой статье вы узнали, как создавать формы в файлах PDF с помощью C++. Кроме того, вы узнали, как заполнять и изменять существующие поля в формах PDF. Вы также видели, как удалить поле формы из формы PDF с помощью Aspose.PDF for C++ API. API предоставляет множество дополнительных функций для работы с PDF-файлами, которые вы можете подробно изучить, изучив официальную документацию. Если у вас есть вопросы относительно любого аспекта API, обращайтесь к нам на наш бесплатный форум поддержки.