Crea, compila o modifica moduli PDF compilabili con C++

Con l’avvento dei computer e di Internet, molte informazioni vengono acquisite digitalmente. Diverse aziende hanno escogitato soluzioni per rendere questo processo più efficiente. Una di queste soluzioni sono i moduli PDF compilabili. I moduli PDF sono una scelta popolare che semplifica l’acquisizione di informazioni in formato digitale. I moduli PDF possono essere utilizzati per acquisire i dati del sondaggio o come moduli di ammissione. Alla luce di ciò, questo articolo ti insegnerà come creare, compilare e modificare moduli PDF compilabili utilizzando C++.

API C++ per creare, compilare e modificare moduli PDF compilabili

Aspose.PDF for C++ è una libreria C++ che consente di creare, leggere e aggiornare documenti PDF. Inoltre, l’API supporta la creazione, la compilazione e la modifica di moduli PDF compilabili. Puoi installare l’API tramite NuGet o scaricarla direttamente dalla sezione download.

PM> Install-Package Aspose.PDF.Cpp

Crea moduli PDF compilabili utilizzando C++

In questo esempio creeremo un modulo da zero con due caselle di testo e un pulsante di opzione. Tuttavia, una casella di testo è a più righe e l’altra è a riga singola. Di seguito sono riportati i passaggi per creare un modulo in un file PDF.

Il codice di esempio seguente mostra come creare un modulo in un file PDF usando C++.

// Crea un'istanza della classe Document
auto pdfDocument = MakeObject<Document>();

// Aggiungi una pagina vuota al documento
System::SharedPtr<Page> page = pdfDocument->get_Pages()->Add();

System::SharedPtr<Aspose::Pdf::Rectangle> rectangle1 = MakeObject<Aspose::Pdf::Rectangle>(275, 740, 440, 770);

// Crea un campo TextBox
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);

// Crea un campo TextBox
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()));

// Aggiungi TextBoxField al modulo
pdfDocument->get_Form()->Add(nameBox, 1);
pdfDocument->get_Form()->Add(mrnBox, 1);

// Crea una tabella
System::SharedPtr<Table> table = MakeObject<Table>();

table->set_Left(200);
table->set_Top(300);
table->set_ColumnWidths(u"120");

// Aggiungi la tabella alla pagina
page->get_Paragraphs()->Add(table);

// Crea righe e colonne
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();

// Crea un campo RadioButton
System::SharedPtr<RadioButtonField> rf = MakeObject<RadioButtonField>(page);

rf->set_PartialName(u"radio");

// Aggiungi RadioButtonField al form
pdfDocument->get_Form()->Add(rf, 1);

// Crea opzioni per i pulsanti di opzione
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);

// Aggiungi le opzioni a 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);

// Aggiungi le opzioni alle celle della tabella
c1->get_Paragraphs()->Add(opt1);
c2->get_Paragraphs()->Add(opt2);


// Salva il file di output
pdfDocument->Save(u"OutputDirectory\\Fillable_PDF_Form_Out.pdf");
Immagine del file PDF generato dal codice di esempio

Immagine del file PDF generato dal codice di esempio

Compila un modulo esistente in un file PDF utilizzando C++

In questo esempio utilizzeremo il file generato nell’esempio precedente. Caricheremo il file utilizzando la classe Document e compileremo i suoi campi. Di seguito sono riportati i passaggi per compilare i campi di un modulo PDF esistente.

Il codice di esempio seguente mostra come compilare un modulo esistente in un file PDF usando C++.

// Carica il file PDF
auto pdfDocument = MakeObject<Document>(u"SourceDirectory\\Fillable_PDF_Form.pdf");

// Recupera i campi della casella di testo
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"));

// Imposta il valore dei campi della casella di testo
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.");

// Recupera il campo del pulsante di opzione
System::SharedPtr<RadioButtonField> radioField = System::DynamicCast<RadioButtonField>(pdfDocument->get_Form()->idx_get(u"radio"));

// Imposta il valore del campo del pulsante di opzione
radioField->set_Selected(1);

// Salva il file di output
pdfDocument->Save(u"OutputDirectory\\Fill_PDF_Form_Field_Out.pdf");
Immagine del file PDF generato dal codice di esempio

Immagine del file PDF generato dal codice di esempio

Modifica il valore di un campo modulo in un modulo PDF utilizzando C++

Con Aspose.PDF per C++, possiamo anche modificare il valore di un campo precedentemente compilato. In questo esempio utilizzeremo il file generato nell’esempio precedente e modificheremo il valore del primo TextBoxField. Per raggiungere questo obiettivo, seguire i passaggi indicati di seguito.

Il codice di esempio seguente mostra come modificare il valore di un campo in un modulo PDF usando C++.

// Carica il file PDF
auto pdfDocument = MakeObject<Document>(u"SourceDirectory\\Fill_PDF_Form_Field.pdf");

// Recupera il campo TextBox
System::SharedPtr<TextBoxField> textBoxField = System::DynamicCast<TextBoxField>(pdfDocument->get_Form()->idx_get(u"nameBox1"));

// Aggiorna il valore di TextBoxField
textBoxField->set_Value(u"Changed Value");

// Contrassegna TextBoxField come di sola lettura
textBoxField->set_ReadOnly(true);

// Salva il file di output
pdfDocument->Save(u"OutputDirectory\\Modify_Form_Field_out.pdf");
Immagine del file PDF generato dal codice di esempio

Immagine del file PDF generato dal codice di esempio

Elimina un campo modulo da un modulo PDF esistente utilizzando C++

L’API consente inoltre di eliminare i campi modulo dai moduli PDF esistenti. Di seguito sono riportati i passaggi per eliminare un campo modulo da un modulo PDF.

Il codice di esempio seguente mostra come eliminare un campo modulo da un modulo PDF esistente utilizzando C++.

// Carica il file PDF
auto pdfDocument = MakeObject<Document>(u"SourceDirectory\\Fill_PDF_Form_Field.pdf");

// Elimina il campo
pdfDocument->get_Form()->Delete(u"nameBox1");

// Salva il file di output
pdfDocument->Save(u"OutputDirectory\\Delete_Form_Field_out.pdf");
Immagine del file PDF generato dal codice di esempio

Immagine del file PDF generato dal codice di esempio

Ottieni una licenza gratuita

Puoi provare l’API senza limitazioni di valutazione richiedendo una licenza temporanea gratuita.

Conclusione

In questo articolo hai imparato come creare moduli in file PDF usando C++. Inoltre, hai imparato a compilare e modificare i campi esistenti nei moduli PDF. Hai anche visto come rimuovere un campo modulo da un modulo PDF utilizzando Aspose.PDF per l’API C++. L’API fornisce una serie di funzionalità aggiuntive per lavorare con i file PDF che puoi esplorare in dettaglio esaminando la documentazione ufficiale. In caso di domande su qualsiasi aspetto dell’API, non esitare a contattarci nel nostro forum di supporto gratuito.

Guarda anche