隨著計算機和互聯網的出現,大量信息以數字方式獲取。不同的公司想出了使這個過程更有效率的解決方案。一種這樣的解決方案是可填寫的 PDF 表單。 PDF 表單是一種流行的選擇,可以輕鬆地以數字方式捕獲信息。 PDF 表格可用於獲取調查數據或用作錄取表格。鑑於此,本文將教您如何使用 C++ 創建、填寫和編輯可填寫的 PDF 表單。
- 用於創建、填寫和編輯可填寫 PDF 表單的 C++ API
- 使用 C++ 創建可填寫的 PDF 表單
- 使用 C++ 在 PDF 文件中填寫現有表單
- 使用 C++ 修改 PDF 表單中表單域的值
- 使用 C++ 從現有 PDF 表單中刪除表單域
用於創建、填寫和編輯可填寫 PDF 表單的 C++ API
Aspose.PDF for C++ 是一個 C++ 庫,允許您創建、閱讀和更新 PDF 文檔。此外,API 支持創建、填寫和編輯可填寫的 PDF 表單。您可以通過 NuGet 安裝 API 或直接從 下載 部分下載。
PM> Install-Package Aspose.PDF.Cpp
使用 C++ 創建可填寫的 PDF 表單
在這個例子中,我們將從頭開始創建一個帶有兩個文本框和一個單選按鈕的表單。但是,一個文本框是多行的,另一個是單行的。以下是在 PDF 文件中創建表單的步驟。
- 創建 Document 類的實例。
- 向文檔添加空白頁。
- 創建 TextBoxField 類的實例。
- 設置 TextBoxField 的屬性,如 FontSize、Color 等。
- 創建第二個 TextBoxField 的實例並設置其屬性。
- 使用 Document->getForm()->Add(System::SharedPtr字段,int32t pageNumber) 方法。
- 創建一個表。
- 創建 RadioButtonField 類的實例。
- 使用 Document->getForm()->Add(System::SharedPtr字段,int32t pageNumber) 方法。
- 創建 RadioButtonOptionField 類的兩個實例來表示單選按鈕的選項。
- 設置 OptionName、Width 和 Height 並使用 RadioButtonField->Add(System::SharedPtr) 將選項添加到單選按鈕const & newItem) 方法。
- 使用 Cell->getParagraphs()->Add(System::SharedPtr段) 方法。
- 使用 Document->Save(System::String outputFileName) 方法保存輸出文件。
以下示例代碼顯示瞭如何使用 C++ 在 PDF 文件中創建表單。
// 創建文檔類的實例
auto pdfDocument = MakeObject<Document>();
// 向文檔添加空白頁
System::SharedPtr<Page> page = pdfDocument->get_Pages()->Add();
System::SharedPtr<Aspose::Pdf::Rectangle> rectangle1 = MakeObject<Aspose::Pdf::Rectangle>(275, 740, 440, 770);
// 創建一個文本框字段
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);
// 創建一個文本框字段
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()));
// 將 TextBoxField 添加到窗體
pdfDocument->get_Form()->Add(nameBox, 1);
pdfDocument->get_Form()->Add(mrnBox, 1);
// 創建表
System::SharedPtr<Table> table = MakeObject<Table>();
table->set_Left(200);
table->set_Top(300);
table->set_ColumnWidths(u"120");
// 將表格添加到頁面
page->get_Paragraphs()->Add(table);
// 創建行和列
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();
// 創建一個 RadioButtonField
System::SharedPtr<RadioButtonField> rf = MakeObject<RadioButtonField>(page);
rf->set_PartialName(u"radio");
// 將 RadioButtonField 添加到窗體
pdfDocument->get_Form()->Add(rf, 1);
// 創建單選按鈕選項
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);
// 將選項添加到 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);
// 將選項添加到表格的單元格
c1->get_Paragraphs()->Add(opt1);
c2->get_Paragraphs()->Add(opt2);
// 保存輸出文件
pdfDocument->Save(u"OutputDirectory\\Fillable_PDF_Form_Out.pdf");
使用 C++ 在 PDF 文件中填寫現有表單
在此示例中,我們將使用在上一個示例中生成的文件。我們將使用 Document 類加載文件並填充其字段。以下是填寫現有 PDF 表單字段的步驟。
- 使用 Document 類加載 PDF 文件。
- 使用 Document->getForm()->idxget(System::String name) 方法檢索 TextBoxFields。
- 使用 TextBoxField->setValue(System::String value) 方法設置兩個 TextBoxField 的值。
- 使用 Document->getForm()->idxget(System::String name) 方法檢索 RadioButtonField。
- 使用 RadioButtonField->setSelected(int32t value) 方法設置 RadioButtonField 的值。
- 使用 Document->Save(System::String outputFileName) 方法保存輸出文件。
以下示例代碼顯示瞭如何使用 C++ 填寫 PDF 文件中的現有表單。
// 加載 PDF 文件
auto pdfDocument = MakeObject<Document>(u"SourceDirectory\\Fillable_PDF_Form.pdf");
// 檢索文本框字段
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"));
// 設置文本框字段的值
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.");
// 檢索單選按鈕字段
System::SharedPtr<RadioButtonField> radioField = System::DynamicCast<RadioButtonField>(pdfDocument->get_Form()->idx_get(u"radio"));
// 設置單選按鈕字段的值
radioField->set_Selected(1);
// 保存輸出文件
pdfDocument->Save(u"OutputDirectory\\Fill_PDF_Form_Field_Out.pdf");
使用 C++ 修改 PDF 表單中表單域的值
使用 Aspose.PDF for C++,我們還可以修改先前填寫的字段的值。在這個例子中,我們將使用上一個例子中生成的文件並修改第一個 TextBoxField 的值。為此,請按照以下步驟操作。
- 使用 Document 類加載 PDF 文件。
- 使用 Document->getForm()->idxget(System::String name) 方法檢索 TextBoxField。
- 使用 TextBoxField->setValue(System::String value) 方法更新 TextBoxField 的值。
- 使用 Document->Save(System::String outputFileName) 方法保存輸出文件。
以下示例代碼顯示瞭如何使用 C++ 修改 PDF 表單中的字段值。
// 加載 PDF 文件
auto pdfDocument = MakeObject<Document>(u"SourceDirectory\\Fill_PDF_Form_Field.pdf");
// 檢索 TextBoxField
System::SharedPtr<TextBoxField> textBoxField = System::DynamicCast<TextBoxField>(pdfDocument->get_Form()->idx_get(u"nameBox1"));
// 更新 TextBoxField 的值
textBoxField->set_Value(u"Changed Value");
// 將 TextBoxField 標記為只讀
textBoxField->set_ReadOnly(true);
// 保存輸出文件
pdfDocument->Save(u"OutputDirectory\\Modify_Form_Field_out.pdf");
使用 C++ 從現有 PDF 表單中刪除表單域
API 還允許您從現有 PDF 表單中刪除表單域。以下是從 PDF 表單中刪除表單域的步驟。
- 使用 Document 類加載 PDF 文件。
- 使用 Document->getForm()->Delete(System::String fieldName) 方法刪除字段。
- 使用 Document->Save(System::String outputFileName) 方法保存輸出文件。
以下示例代碼顯示瞭如何使用 C++ 從現有 PDF 表單中刪除表單域。
// 加載 PDF 文件
auto pdfDocument = MakeObject<Document>(u"SourceDirectory\\Fill_PDF_Form_Field.pdf");
// 刪除字段
pdfDocument->get_Form()->Delete(u"nameBox1");
// 保存輸出文件
pdfDocument->Save(u"OutputDirectory\\Delete_Form_Field_out.pdf");
獲得免費許可證
您可以通過申請 免費的臨時許可證 來試用沒有評估限制的 API。
結論
在本文中,您學習瞭如何使用 C++ 在 PDF 文件中創建表單。此外,您還學習瞭如何填寫和修改 PDF 表單中的現有字段。您還了解瞭如何使用 Aspose.PDF for C++ API 從 PDF 表單中刪除表單域。該 API 提供了一系列用於處理 PDF 文件的附加功能,您可以通過 官方文檔 詳細了解這些功能。如果您對 API 的任何方面有疑問,請隨時通過我們的免費支持論壇 與我們聯繫。