Skapa, fyll eller redigera ifyllbara PDF-formulär med C++

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

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.

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");
Bild på PDF-filen som genereras av exempelkoden

Bild på PDF-filen som genereras av exempelkoden

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.

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");
Bild på PDF-filen som genereras av exempelkoden

Bild på PDF-filen som genereras av exempelkoden

Ä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.

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");
Bild på PDF-filen som genereras av exempelkoden

Bild på PDF-filen som genereras av exempelkoden

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.

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");
Bild på PDF-filen som genereras av exempelkoden

Bild på PDF-filen som genereras av exempelkoden

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.

Se även