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
- Crea moduli PDF compilabili utilizzando C++
- Compila un modulo esistente in un file PDF utilizzando C++
- Modifica il valore di un campo modulo in un modulo PDF utilizzando C++
- Elimina un campo modulo da un modulo PDF esistente 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.
- Crea un’istanza della classe Document.
- Aggiungi una pagina vuota al documento.
- Crea un’istanza della classe TextBoxField.
- Imposta le proprietà di TextBoxField come FontSize, Color, ecc.
- Crea un’istanza del secondo TextBoxField e imposta le sue proprietà.
- Aggiungi entrambe le caselle di testo al modulo usando Document->getForm()->Add(System::SharedPtr campo, int32t pageNumber).
- Crea una tabella.
- Crea un’istanza della classe RadioButtonField.
- Aggiungi il RadioButton al form usando Document->getForm()->Add(System::SharedPtr campo, int32t pageNumber).
- Crea due istanze della classe RadioButtonOptionField per rappresentare le opzioni del pulsante di opzione.
- Impostare OptionName, Width e Height e aggiungere le opzioni al pulsante di opzione utilizzando RadioButtonField->Add(System::SharedPtr const & newItem).
- Aggiungi le opzioni del pulsante di opzione alle celle della tabella usando Cell->getParagraphs()->Add(System::SharedPtr paragrafo).
- Salvare il file di output utilizzando il metodo Document->Save(System::String outputFileName).
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");
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.
- Carica il file PDF utilizzando la classe Document.
- Recupera i TextBoxFields usando il metodo Document->getForm()->idxget(System::String name).
- Impostare i valori di entrambi i TextBoxField utilizzando il metodo TextBoxField->setValue(System::String value).
- Recupera RadioButtonField utilizzando il metodo Document->getForm()->idxget(System::String name).
- Impostare il valore di RadioButtonField utilizzando il metodo RadioButtonField->setSelected(int32t value).
- Salvare il file di output utilizzando il metodo Document->Save(System::String outputFileName).
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");
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.
- Carica il file PDF utilizzando la classe Documento.
- Recuperare TextBoxField utilizzando il metodo Document->getForm()->idxget(System::String name).
- Aggiorna il valore di TextBoxField utilizzando il metodo TextBoxField->setValue(System::String value).
- Salvare il file di output utilizzando il metodo Document->Save(System::String outputFileName).
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");
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.
- Carica il file PDF utilizzando la classe Document.
- Eliminare il campo utilizzando il metodo Document->getForm()->Delete(System::String fieldName).
- Salvare il file di output utilizzando il metodo Document->Save(System::String outputFileName).
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");
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.