Med tillkomsten av datorer och internet fångas mycket information digitalt. Olika företag kom med lösningar för att göra denna process mer effektiv. En sådan lösning är de ifyllbara PDF-formulären. PDF-formulär är ett populärt val som gör det enkelt att fånga information digitalt. PDF-formulär kan användas för att samla in enkätdata eller som antagningsformulär. Mot bakgrund av detta kommer den här artikeln att lära dig hur du skapar, fyller och redigerar ifyllbara PDF-formulär med C++.
- C++ API för att skapa, fylla och redigera ifyllbara PDF-formulär
- Skapa ifyllbara PDF-formulär med C++
- Fyll i ett befintligt formulär i en PDF-fil med C++
- Ändra värdet på ett formulärfält i ett PDF-formulär med C++
- Ta bort ett formulärfält från ett befintligt PDF-formulär med C++
C++ API för att skapa, fylla och redigera ifyllbara PDF-formulär
Aspose.PDF for C++ är ett C++-bibliotek som låter dig skapa, läsa och uppdatera PDF-dokument. Dessutom stöder API:et skapa, fylla och redigera ifyllbara PDF-formulär. Du kan antingen installera API:t genom NuGet eller ladda ner det direkt från avsnittet downloads.
PM> Install-Package Aspose.PDF.Cpp
Skapa ifyllbara PDF-formulär med C++
I det här exemplet kommer vi att skapa ett formulär från början med två textrutor och en alternativknapp. En textruta är dock flerradig och den andra är en rad. Följande är stegen för att skapa ett formulär i en PDF-fil.
- Skapa en instans av klassen Document.
- Lägg till en tom sida i dokumentet.
- Skapa en instans av klassen TextBoxField.
- Ställ in egenskaperna för TextBoxField som FontSize, Color, etc.
- Skapa en instans av det andra TextBoxField och ställ in dess egenskaper.
- Lägg till båda textrutorna i formuläret med hjälp av Dokument->getForm()->Add(System::SharedPtr field, int32t pageNumber) metod.
- Skapa en tabell.
- Skapa en instans av klassen RadioButtonField.
- Lägg till RadioButton i formuläret med hjälp av Document->getForm()->Add(System::SharedPtr field, int32t pageNumber) metod.
- Skapa två instanser av klassen RadioButtonOptionField för att representera alternativen för alternativknappen.
- Ställ in OptionName, Width och Height och lägg till alternativen i alternativknappen med hjälp av RadioButtonField->Add(System::SharedPtr) const & newItem) metod.
- Lägg till alternativen för alternativknappen till cellerna i tabellen med hjälp av Cell->getParagraphs()->Add(System::SharedPtr) stycke) metod.
- Spara utdatafilen med metoden Document->Save(System::String outputFileName).
Följande exempelkod visar hur man skapar ett formulär i en PDF-fil med C++.
// Skapa en instans av klassen Document
auto pdfDocument = MakeObject<Document>();
// Lägg till en tom sida i dokumentet
System::SharedPtr<Page> page = pdfDocument->get_Pages()->Add();
System::SharedPtr<Aspose::Pdf::Rectangle> rectangle1 = MakeObject<Aspose::Pdf::Rectangle>(275, 740, 440, 770);
// Skapa ett 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);
// Skapa ett 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()));
// Lägg till TextBoxField i formuläret
pdfDocument->get_Form()->Add(nameBox, 1);
pdfDocument->get_Form()->Add(mrnBox, 1);
// Skapa en tabell
System::SharedPtr<Table> table = MakeObject<Table>();
table->set_Left(200);
table->set_Top(300);
table->set_ColumnWidths(u"120");
// Lägg till tabellen på sidan
page->get_Paragraphs()->Add(table);
// Skapa rader och kolumner
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();
// Skapa ett RadioButtonField
System::SharedPtr<RadioButtonField> rf = MakeObject<RadioButtonField>(page);
rf->set_PartialName(u"radio");
// Lägg till RadioButtonField i formuläret
pdfDocument->get_Form()->Add(rf, 1);
// Skapa alternativ för alternativknappar
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);
// Lägg till alternativen i 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);
// Lägg till alternativen i cellerna i tabellen
c1->get_Paragraphs()->Add(opt1);
c2->get_Paragraphs()->Add(opt2);
// Spara utdatafilen
pdfDocument->Save(u"OutputDirectory\\Fillable_PDF_Form_Out.pdf");
Fyll i ett befintligt formulär i en PDF-fil med C++
I det här exemplet kommer vi att använda filen som skapades i föregående exempel. Vi laddar filen med klassen Document och fyller i dess fält. Följande är stegen för att fylla i fälten i ett befintligt PDF-formulär.
- Ladda PDF-filen med klassen Document.
- Hämta TextBoxFields med metoden Document->getForm()->idxget(System::String name).
- Ställ in värdena för båda TextBoxFields med metoden TextBoxField->setValue(System::String value).
- Hämta RadioButtonField med metoden Document->getForm()->idxget(System::String name).
- Ställ in värdet för RadioButtonField med metoden RadioButtonField->setSelected(int32t value).
- Spara utdatafilen med metoden Document->Save(System::String outputFileName).
Följande exempelkod visar hur man fyller i ett befintligt formulär i en PDF-fil med C++.
// Ladda PDF-filen
auto pdfDocument = MakeObject<Document>(u"SourceDirectory\\Fillable_PDF_Form.pdf");
// Hämta textrutans fält
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"));
// Ställ in värdet på textrutefälten
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.");
// Hämta alternativknappsfältet
System::SharedPtr<RadioButtonField> radioField = System::DynamicCast<RadioButtonField>(pdfDocument->get_Form()->idx_get(u"radio"));
// Ställ in värdet för alternativknappsfältet
radioField->set_Selected(1);
// Spara utdatafilen
pdfDocument->Save(u"OutputDirectory\\Fill_PDF_Form_Field_Out.pdf");
Ändra värdet på ett formulärfält i ett PDF-formulär med C++
Med Aspose.PDF för C++ kan vi även ändra värdet på ett tidigare ifyllt fält. I det här exemplet kommer vi att använda filen som genererades i föregående exempel och ändra värdet på det första TextBoxField. För att uppnå detta, följ stegen nedan.
- Ladda PDF-filen med klassen Document.
- Hämta TextBoxField med metoden Document->getForm()->idxget(System::String name).
- Uppdatera värdet för TextBoxField med metoden TextBoxField->setValue(System::String value).
- Spara utdatafilen med metoden Document->Save(System::String outputFileName).
Följande exempelkod visar hur du ändrar värdet på ett fält i ett PDF-formulär med C++.
// Ladda PDF-filen
auto pdfDocument = MakeObject<Document>(u"SourceDirectory\\Fill_PDF_Form_Field.pdf");
// Hämta TextBoxField
System::SharedPtr<TextBoxField> textBoxField = System::DynamicCast<TextBoxField>(pdfDocument->get_Form()->idx_get(u"nameBox1"));
// Uppdatera värdet för TextBoxField
textBoxField->set_Value(u"Changed Value");
// Markera TextBoxField som skrivskyddad
textBoxField->set_ReadOnly(true);
// Spara utdatafilen
pdfDocument->Save(u"OutputDirectory\\Modify_Form_Field_out.pdf");
Ta bort ett formulärfält från ett befintligt PDF-formulär med C++
API:et låter dig också ta bort formulärfält från befintliga PDF-formulär. Följande är stegen för att ta bort ett formulärfält från ett PDF-formulär.
- Ladda PDF-filen med klassen Document.
- Ta bort fältet med metoden Document->getForm()->Delete(System::String fieldName).
- Spara utdatafilen med metoden Document->Save(System::String outputFileName).
Följande exempelkod visar hur man tar bort ett formulärfält från ett befintligt PDF-formulär med C++.
// Ladda PDF-filen
auto pdfDocument = MakeObject<Document>(u"SourceDirectory\\Fill_PDF_Form_Field.pdf");
// Ta bort fältet
pdfDocument->get_Form()->Delete(u"nameBox1");
// Spara utdatafilen
pdfDocument->Save(u"OutputDirectory\\Delete_Form_Field_out.pdf");
Skaffa en gratis licens
Du kan prova API:t utan utvärderingsbegränsningar genom att begära en gratis tillfällig licens.
Slutsats
I den här artikeln har du lärt dig hur du skapar formulär i PDF-filer med C++. Dessutom har du lärt dig hur du fyller i och ändrar befintliga fält i PDF-formulär. Du har också sett hur man tar bort ett formulärfält från ett PDF-formulär med Aspose.PDF för C++ API. API:et tillhandahåller ett gäng ytterligare funktioner för att arbeta med PDF-filer som du kan utforska i detalj genom att gå igenom den officiella dokumentationen. Om du har frågor angående någon aspekt av API:t är du välkommen att kontakta oss på vårt gratis supportforum.