Wraz z pojawieniem się komputerów i Internetu wiele informacji jest przechwytywanych cyfrowo. Różne firmy opracowały rozwiązania usprawniające ten proces. Jednym z takich rozwiązań są wypełnialne formularze PDF. Formularze PDF to popularny wybór, który ułatwia cyfrowe przechwytywanie informacji. Formularze PDF mogą być używane do przechwytywania danych ankietowych lub jako formularze przyjęć. W związku z tym w tym artykule dowiesz się, jak tworzyć, wypełniać i edytować formularze PDF z możliwością wypełniania za pomocą języka C++.
- C++ API do tworzenia, wypełniania i edytowania formularzy PDF do wypełnienia
- Twórz formularze PDF do wypełnienia za pomocą C++
- Wypełnij istniejący formularz w pliku PDF za pomocą C++
- Zmodyfikuj wartość pola formularza w formularzu PDF za pomocą C++
- Usuń pole formularza z istniejącego formularza PDF za pomocą C++
C++ API do tworzenia, wypełniania i edytowania formularzy PDF do wypełnienia
Aspose.PDF for C++ to biblioteka C++, która umożliwia tworzenie, odczytywanie i aktualizowanie dokumentów PDF. Ponadto interfejs API obsługuje tworzenie, wypełnianie i edytowanie formularzy PDF do wypełnienia. Możesz zainstalować API przez NuGet lub pobrać bezpośrednio z sekcji downloads.
PM> Install-Package Aspose.PDF.Cpp
Twórz formularze PDF do wypełnienia za pomocą C++
W tym przykładzie utworzymy od podstaw formularz z dwoma polami tekstowymi i jednym przyciskiem radiowym. Jednak jedno pole tekstowe jest wielowierszowe, a drugie jednowierszowe. Poniżej opisano kroki tworzenia formularza w pliku PDF.
- Utwórz instancję klasy Document.
- Dodaj pustą stronę do dokumentu.
- Utwórz instancję klasy TextBoxField.
- Ustaw właściwości TextBoxField, takie jak FontSize, Color itd.
- Utwórz instancję drugiego TextBoxField i ustaw jego właściwości.
- Dodaj oba pola tekstowe do formularza za pomocą Document->getForm()->Add(System::SharedPtr pole, int32t pageNumber) metoda.
- Utwórz tabelę.
- Utwórz instancję klasy RadioButtonField.
- Dodaj RadioButton do formularza za pomocą Document->getForm()->Add(System::SharedPtr pole, int32t pageNumber) metoda.
- Utwórz dwie instancje klasy RadioButtonOptionField, aby reprezentować opcje przycisku radiowego.
- Ustaw OptionName, Width i Height i dodaj opcje do przycisku opcji za pomocą [RadioButtonField->Add(System::SharedPtr const & newItem) 17 metoda.
- Dodaj opcje przycisku radiowego do komórek tabeli za pomocą [Cell->getParagraphs()->Add(System::SharedPtr akapit) 18 metoda.
- Zapisz plik wyjściowy za pomocą metody Document->Save(System::String outputFileName).
Poniższy przykładowy kod pokazuje, jak utworzyć formularz w pliku PDF przy użyciu języka C++.
// Utwórz instancję klasy Document
auto pdfDocument = MakeObject<Document>();
// Dodaj pustą stronę do dokumentu
System::SharedPtr<Page> page = pdfDocument->get_Pages()->Add();
System::SharedPtr<Aspose::Pdf::Rectangle> rectangle1 = MakeObject<Aspose::Pdf::Rectangle>(275, 740, 440, 770);
// Utwórz 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);
// Utwórz 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()));
// Dodaj TextBoxField do formularza
pdfDocument->get_Form()->Add(nameBox, 1);
pdfDocument->get_Form()->Add(mrnBox, 1);
// Utwórz tabelę
System::SharedPtr<Table> table = MakeObject<Table>();
table->set_Left(200);
table->set_Top(300);
table->set_ColumnWidths(u"120");
// Dodaj tabelę do strony
page->get_Paragraphs()->Add(table);
// Utwórz wiersze i kolumny
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();
// Utwórz RadioButtonField
System::SharedPtr<RadioButtonField> rf = MakeObject<RadioButtonField>(page);
rf->set_PartialName(u"radio");
// Dodaj pole RadioButtonField do formularza
pdfDocument->get_Form()->Add(rf, 1);
// Utwórz opcje przycisku radiowego
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);
// Dodaj opcje do pola 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);
// Dodaj opcje do komórek tabeli
c1->get_Paragraphs()->Add(opt1);
c2->get_Paragraphs()->Add(opt2);
// Zapisz plik wyjściowy
pdfDocument->Save(u"OutputDirectory\\Fillable_PDF_Form_Out.pdf");
Wypełnij istniejący formularz w pliku PDF za pomocą C++
W tym przykładzie użyjemy pliku wygenerowanego w poprzednim przykładzie. Załadujemy plik za pomocą klasy Document i wypełnimy jego pola. Poniżej przedstawiono kroki wypełniania pól istniejącego formularza PDF.
- Załaduj plik PDF przy użyciu klasy Document.
- Pobierz TextBoxFields za pomocą metody Document->getForm()->idxget(System::String name).
- Ustaw wartości obu pól TextBoxField za pomocą metody TextBoxField->setValue(System::String value).
- Pobierz RadioButtonField za pomocą metody Document->getForm()->idxget(System::String name).
- Ustaw wartość RadioButtonField za pomocą metody RadioButtonField->setSelected(int32t value).
- Zapisz plik wyjściowy za pomocą metody Document->Save(System::String outputFileName).
Poniższy przykładowy kod pokazuje, jak wypełnić istniejący formularz w pliku PDF przy użyciu języka C++.
// Załaduj plik PDF
auto pdfDocument = MakeObject<Document>(u"SourceDirectory\\Fillable_PDF_Form.pdf");
// Pobierz pola pola tekstowego
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"));
// Ustaw wartość pól pola tekstowego
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.");
// Pobierz pole przycisku radiowego
System::SharedPtr<RadioButtonField> radioField = System::DynamicCast<RadioButtonField>(pdfDocument->get_Form()->idx_get(u"radio"));
// Ustaw wartość pola przycisku opcji
radioField->set_Selected(1);
// Zapisz plik wyjściowy
pdfDocument->Save(u"OutputDirectory\\Fill_PDF_Form_Field_Out.pdf");
Zmodyfikuj wartość pola formularza w formularzu PDF za pomocą C++
Z Aspose.PDF for C++ możemy również modyfikować wartość wcześniej wypełnionego pola. W tym przykładzie użyjemy pliku wygenerowanego w poprzednim przykładzie i zmodyfikujemy wartość pierwszego pola TextBoxField. Aby to osiągnąć, wykonaj czynności podane poniżej.
- Załaduj plik PDF przy użyciu klasy Document.
- Pobierz TextBoxField za pomocą metody Document->getForm()->idxget(System::String name).
- Zaktualizuj wartość TextBoxField za pomocą metody TextBoxField->setValue(System::String value).
- Zapisz plik wyjściowy za pomocą metody Document->Save(System::String outputFileName).
Poniższy przykładowy kod pokazuje, jak zmodyfikować wartość pola w formularzu PDF przy użyciu języka C++.
// Załaduj plik PDF
auto pdfDocument = MakeObject<Document>(u"SourceDirectory\\Fill_PDF_Form_Field.pdf");
// Pobierz TextBoxField
System::SharedPtr<TextBoxField> textBoxField = System::DynamicCast<TextBoxField>(pdfDocument->get_Form()->idx_get(u"nameBox1"));
// Zaktualizuj wartość TextBoxField
textBoxField->set_Value(u"Changed Value");
// Oznacz TextBoxField jako tylko do odczytu
textBoxField->set_ReadOnly(true);
// Zapisz plik wyjściowy
pdfDocument->Save(u"OutputDirectory\\Modify_Form_Field_out.pdf");
Usuń pole formularza z istniejącego formularza PDF za pomocą C++
Interfejs API umożliwia również usuwanie pól formularzy z istniejących formularzy PDF. Poniżej przedstawiono kroki, aby usunąć pole formularza z formularza PDF.
- Załaduj plik PDF przy użyciu klasy Document.
- Usuń pole za pomocą metody Document->getForm()->Delete(System::String fieldName).
- Zapisz plik wyjściowy za pomocą metody Document->Save(System::String outputFileName).
Poniższy przykładowy kod pokazuje, jak usunąć pole formularza z istniejącego formularza PDF przy użyciu języka C++.
// Załaduj plik PDF
auto pdfDocument = MakeObject<Document>(u"SourceDirectory\\Fill_PDF_Form_Field.pdf");
// Usuń pole
pdfDocument->get_Form()->Delete(u"nameBox1");
// Zapisz plik wyjściowy
pdfDocument->Save(u"OutputDirectory\\Delete_Form_Field_out.pdf");
Uzyskaj bezpłatną licencję
Możesz wypróbować interfejs API bez ograniczeń ewaluacyjnych, prosząc o bezpłatną licencję tymczasową.
Wniosek
W tym artykule nauczyłeś się tworzyć formularze w plikach PDF przy użyciu języka C++. Dodatkowo nauczyłeś się wypełniać i modyfikować istniejące pola w formularzach PDF. Widziałeś również, jak usunąć pole formularza z formularza PDF za pomocą Aspose.PDF for C++ API. Interfejs API zapewnia szereg dodatkowych funkcji do pracy z plikami PDF, które można szczegółowo zbadać, przeglądając oficjalną dokumentację. Jeśli masz pytania dotyczące dowolnego aspektu interfejsu API, skontaktuj się z nami na naszym bezpłatnym forum pomocy technicznej.