Tạo, điền hoặc chỉnh sửa các biểu mẫu PDF có thể điền bằng C ++

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

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.

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");
Hình ảnh của tệp PDF được tạo bởi mã mẫu

Hình ảnh của tệp PDF được tạo bởi mã mẫu

Đ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ó.

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");
Hình ảnh của tệp PDF được tạo bởi mã mẫu

Hình ảnh của tệp PDF được tạo bởi mã mẫu

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.

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");
Hình ảnh của tệp PDF được tạo bởi mã mẫu

Hình ảnh của tệp PDF được tạo bởi mã mẫu

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.

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");
Hình ảnh của tệp PDF được tạo bởi mã mẫu

Hình ảnh của tệp PDF được tạo bởi mã mẫu

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.

Xem thêm