Với sự ra đời của máy tính và internet, rất nhiều thông tin được ghi lại bằng kỹ thuật số. Các công ty khác nhau đã đưa ra các giải pháp để làm cho quá trình này hiệu quả hơn. Một trong những giải pháp như vậy là các biểu mẫu PDF có thể điền. Biểu mẫu PDF là một lựa chọn phổ biến giúp dễ dàng nắm bắt thông tin bằng kỹ thuật số. Biểu mẫu PDF có thể được sử dụng để thu thập dữ liệu khảo sát hoặc làm biểu mẫu nhập học. Về vấn đề này, bài viết này sẽ hướng dẫn bạn cách tạo, điền và chỉnh sửa các biểu mẫu PDF có thể điền bằng C ++.
- API C ++ để tạo, điền và chỉnh sửa các biểu mẫu PDF có thể điền
- Tạo các biểu mẫu PDF có thể điền bằng C ++
- Điền vào biểu mẫu hiện có trong tệp PDF bằng C ++
- Sửa đổi giá trị của trường biểu mẫu trong biểu mẫu PDF bằng C ++
- Xóa Trường Biểu mẫu khỏi Biểu mẫu PDF Hiện có bằng C ++
API C ++ để tạo, điền và chỉnh sửa các biểu mẫu PDF có thể điền
Aspose.PDF for C ++ là thư viện C ++ cho phép bạn tạo, đọc và cập nhật tài liệu PDF. Hơn nữa, API hỗ trợ tạo, điền và chỉnh sửa các biểu mẫu PDF có thể điền. Bạn có thể cài đặt API thông qua NuGet hoặc tải xuống trực tiếp từ phần tải xuống.
PM> Install-Package Aspose.PDF.Cpp
Tạo các biểu mẫu PDF có thể điền bằng C ++
Trong ví dụ này, chúng tôi sẽ tạo một biểu mẫu từ đầu với hai hộp văn bản và một nút radio. Tuy nhiên, một hộp văn bản là nhiều dòng và hộp còn lại là một dòng. Sau đây là các bước để tạo biểu mẫu trong tệp PDF.
- Tạo một thể hiện của lớp Tài liệu.
- Thêm một trang trống vào tài liệu.
- Tạo một thể hiện của lớp TextBoxField.
- Đặt các thuộc tính của TextBoxField như FontSize, Color, v.v.
- Tạo một thể hiện của TextBoxField thứ hai và thiết lập các thuộc tính của nó.
- Thêm cả hai hộp văn bản vào biểu mẫu bằng cách sử dụng Document-> getForm() -> Add (System :: SharedPtr field, int32t pageNumber) phương thức.
- Tạo một bảng.
- Tạo một thể hiện của lớp RadioButtonField.
- Thêm RadioButton vào biểu mẫu bằng cách sử dụng Document-> getForm() -> Add (System :: SharedPtr field, int32t pageNumber) phương thức.
- Tạo hai phiên bản của lớp RadioButtonOptionField để đại diện cho các tùy chọn của nút radio.
- Đặt OptionName, Width và Height và thêm các tùy chọn vào nút radio bằng cách sử dụng RadioButtonField-> Thêm (Hệ thống :: SharedPtr const & newItem) phương thức.
- Thêm các tùy chọn của nút radio vào các ô của bảng bằng cách sử dụng Cell-> getParagraphs() -> Add (System :: SharedPtr đoạn văn) phương pháp.
- Lưu tệp đầu ra bằng phương thức Document-> Save (System :: String outputFileName).
Mã mẫu sau đây cho biết cách tạo biểu mẫu trong tệp PDF bằng C ++.
// Tạo một phiên bản của lớp Tài liệu
auto pdfDocument = MakeObject<Document>();
// Thêm một trang trống vào tài liệu
System::SharedPtr<Page> page = pdfDocument->get_Pages()->Add();
System::SharedPtr<Aspose::Pdf::Rectangle> rectangle1 = MakeObject<Aspose::Pdf::Rectangle>(275, 740, 440, 770);
// Tạo một 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);
// Tạo một 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()));
// Thêm TextBoxField vào biểu mẫu
pdfDocument->get_Form()->Add(nameBox, 1);
pdfDocument->get_Form()->Add(mrnBox, 1);
// Tạo bảng
System::SharedPtr<Table> table = MakeObject<Table>();
table->set_Left(200);
table->set_Top(300);
table->set_ColumnWidths(u"120");
// Thêm bảng vào trang
page->get_Paragraphs()->Add(table);
// Tạo hàng và cột
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();
// Tạo một RadioButtonField
System::SharedPtr<RadioButtonField> rf = MakeObject<RadioButtonField>(page);
rf->set_PartialName(u"radio");
// Thêm RadioButtonField vào biểu mẫu
pdfDocument->get_Form()->Add(rf, 1);
// Tạo các tùy chọn nút radio
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);
// Thêm các tùy chọn vào 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);
// Thêm các tùy chọn vào các ô của bảng
c1->get_Paragraphs()->Add(opt1);
c2->get_Paragraphs()->Add(opt2);
// Lưu tệp đầu ra
pdfDocument->Save(u"OutputDirectory\\Fillable_PDF_Form_Out.pdf");
Điền vào biểu mẫu hiện có trong tệp PDF bằng C ++
Trong ví dụ này, chúng tôi sẽ sử dụng tệp được tạo trong ví dụ trước. Chúng tôi sẽ tải tệp bằng lớp Tài liệu và điền vào các trường của nó. Sau đây là các bước để điền vào các trường của một biểu mẫu PDF hiện có.
- Tải tệp PDF bằng lớp Tài liệu.
- Truy xuất TextBoxFields bằng phương thức Document-> getForm() -> idxget (System :: String name).
- Đặt giá trị của cả hai trường TextBox bằng phương thức TextBoxField-> setValue (System :: String value).
- Truy xuất RadioButtonField bằng phương thức Document-> getForm() -> idxget (System :: String name).
- Đặt giá trị của RadioButtonField bằng phương thức RadioButtonField-> setSelected (int32t value).
- Lưu tệp đầu ra bằng phương thức Document-> Save (System :: String outputFileName).
Mã mẫu sau đây cho thấy cách điền vào biểu mẫu hiện có trong tệp PDF bằng C ++.
// Tải tệp PDF
auto pdfDocument = MakeObject<Document>(u"SourceDirectory\\Fillable_PDF_Form.pdf");
// Truy xuất các trường hộp văn bản
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"));
// Đặt giá trị của các trường hộp văn bản
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.");
// Truy xuất trường nút radio
System::SharedPtr<RadioButtonField> radioField = System::DynamicCast<RadioButtonField>(pdfDocument->get_Form()->idx_get(u"radio"));
// Đặt giá trị của trường nút radio
radioField->set_Selected(1);
// Lưu tệp đầu ra
pdfDocument->Save(u"OutputDirectory\\Fill_PDF_Form_Field_Out.pdf");
Sửa đổi giá trị của trường biểu mẫu trong biểu mẫu PDF bằng C ++
Với Aspose.PDF cho C ++, chúng ta cũng có thể sửa đổi giá trị của một trường đã điền trước đó. Trong ví dụ này, chúng tôi sẽ sử dụng tệp được tạo trong ví dụ trước và sửa đổi giá trị của TextBoxField đầu tiên. Để đạt được điều này, vui lòng làm theo các bước dưới đây.
- Tải tệp PDF bằng lớp Tài liệu.
- Truy xuất TextBoxField bằng phương thức Document-> getForm() -> idxget (System :: String name).
- Cập nhật giá trị của TextBoxField bằng phương thức TextBoxField-> setValue (System :: String value).
- Lưu tệp đầu ra bằng phương thức Document-> Save (System :: String outputFileName).
Mã mẫu sau đây cho thấy cách sửa đổi giá trị của một trường trong biểu mẫu PDF bằng C ++.
// Tải tệp PDF
auto pdfDocument = MakeObject<Document>(u"SourceDirectory\\Fill_PDF_Form_Field.pdf");
// Truy xuất TextBoxField
System::SharedPtr<TextBoxField> textBoxField = System::DynamicCast<TextBoxField>(pdfDocument->get_Form()->idx_get(u"nameBox1"));
// Cập nhật giá trị của TextBoxField
textBoxField->set_Value(u"Changed Value");
// Đánh dấu TextBoxField là chỉ đọc
textBoxField->set_ReadOnly(true);
// Lưu tệp đầu ra
pdfDocument->Save(u"OutputDirectory\\Modify_Form_Field_out.pdf");
Xóa Trường Biểu mẫu khỏi Biểu mẫu PDF Hiện có bằng C ++
API cũng cho phép bạn xóa các trường biểu mẫu khỏi các biểu mẫu PDF hiện có. Sau đây là các bước để xóa trường biểu mẫu khỏi biểu mẫu PDF.
- Tải tệp PDF bằng lớp Tài liệu.
- Xóa trường bằng phương thức Document-> getForm() -> Delete (System :: String fieldName).
- Lưu tệp đầu ra bằng phương thức Document-> Save (System :: String outputFileName).
Mã mẫu sau đây cho biết cách xóa trường biểu mẫu khỏi biểu mẫu PDF hiện có bằng C ++.
// Tải tệp PDF
auto pdfDocument = MakeObject<Document>(u"SourceDirectory\\Fill_PDF_Form_Field.pdf");
// Xóa trường
pdfDocument->get_Form()->Delete(u"nameBox1");
// Lưu tệp đầu ra
pdfDocument->Save(u"OutputDirectory\\Delete_Form_Field_out.pdf");
Nhận giấy phép miễn phí
Bạn có thể dùng thử API mà không có giới hạn đánh giá bằng cách yêu cầu giấy phép tạm thời miễn phí.
Sự kết luận
Trong bài viết này, bạn đã học cách tạo biểu mẫu trong tệp PDF bằng C ++. Ngoài ra, bạn đã học cách điền và sửa đổi các trường hiện có trong biểu mẫu PDF. Bạn cũng đã thấy cách xóa trường biểu mẫu khỏi biểu mẫu PDF bằng cách sử dụng Aspose.PDF cho C ++ API. API cung cấp một loạt các tính năng bổ sung để làm việc với các tệp PDF mà bạn có thể khám phá chi tiết bằng cách xem qua tài liệu chính thức. Nếu bạn có câu hỏi liên quan đến bất kỳ khía cạnh nào của API, vui lòng liên hệ với chúng tôi tại diễn đàn hỗ trợ miễn phí của chúng tôi.