![Crea, compila o modifica moduli PDF compilabili con C++](images/Fill-PDF-Form.png#center)
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");
![Immagine del file PDF generato dal codice di esempio](images/CreateFillableFormPdfCpp-1024x669.png#center)
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.
- 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");
![Immagine del file PDF generato dal codice di esempio](images/FillFormFieldsPdfCpp-1024x661.png#center)
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.
- 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");
![Immagine del file PDF generato dal codice di esempio](images/ModifyFormFieldPdfCpp.png#center)
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.
- 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");
![Immagine del file PDF generato dal codice di esempio](images/DeleteFormFieldPdfCpp-1024x633.png#center)
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.