إنشاء أو تعبئة أو تحرير نماذج PDF القابلة للتعبئة باستخدام C ++

مع ظهور أجهزة الكمبيوتر والإنترنت ، يتم التقاط الكثير من المعلومات رقميًا. توصلت شركات مختلفة إلى حلول لجعل هذه العملية أكثر كفاءة. أحد هذه الحلول هو نماذج PDF القابلة للتعبئة. تعد نماذج PDF خيارًا شائعًا يجعل من السهل التقاط المعلومات رقميًا. يمكن استخدام نماذج PDF لالتقاط بيانات المسح أو كنماذج قبول. في ضوء ذلك ، ستعلمك هذه المقالة كيفية إنشاء ، وملء ، وتعديل نماذج PDF القابلة للتعبئة باستخدام C ++.

واجهة برمجة تطبيقات C ++ لإنشاء نماذج PDF القابلة للتعبئة وتعبئتها وتحريرها

Aspose.PDF for C ++ هي مكتبة C ++ تسمح لك بإنشاء ، قراءة وتحديث مستندات PDF. علاوة على ذلك ، تدعم واجهة برمجة التطبيقات إنشاء ، وملء ، وتحرير نماذج PDF القابلة للتعبئة. يمكنك إما تثبيت API من خلال NuGet أو تنزيلها مباشرة من قسم التنزيلات.

PM> Install-Package Aspose.PDF.Cpp

إنشاء نماذج PDF قابلة للتعبئة باستخدام C ++

في هذا المثال ، سننشئ نموذجًا من البداية يحتوي على مربعي نص وزر اختيار واحد. ومع ذلك ، يكون أحد مربعات النص متعدد الأسطر والآخر يتكون من سطر واحد. فيما يلي خطوات إنشاء نموذج في ملف PDF.

يوضح نموذج التعليمات البرمجية التالي كيفية إنشاء نموذج في ملف PDF باستخدام C ++.

// قم بإنشاء مثيل لفئة المستند
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);

// قم بإنشاء 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);

// قم بإنشاء 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()));

// أضف 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");
صورة لملف PDF تم إنشاؤه بواسطة نموذج التعليمات البرمجية

صورة لملف PDF تم إنشاؤه بواسطة نموذج التعليمات البرمجية

املأ نموذجًا موجودًا في ملف PDF باستخدام C ++

في هذا المثال ، سنستخدم الملف الذي تم إنشاؤه في المثال السابق. سنقوم بتحميل الملف باستخدام فئة Document ونملأ الحقول الخاصة به. فيما يلي خطوات ملء الحقول الخاصة بنموذج PDF موجود.

يوضح نموذج التعليمات البرمجية التالي كيفية ملء نموذج موجود في ملف PDF باستخدام C ++.

// قم بتحميل ملف 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");
صورة لملف PDF تم إنشاؤه بواسطة نموذج التعليمات البرمجية

صورة لملف PDF تم إنشاؤه بواسطة نموذج التعليمات البرمجية

قم بتعديل قيمة حقل النموذج في نموذج PDF باستخدام C ++

باستخدام Aspose.PDF لـ C ++ ، يمكننا أيضًا تعديل قيمة حقل مملوء مسبقًا. في هذا المثال ، سوف نستخدم الملف الذي تم إنشاؤه في المثال السابق ونقوم بتعديل قيمة أول TextBoxField. لتحقيق ذلك ، يرجى اتباع الخطوات الواردة أدناه.

يوضح نموذج التعليمات البرمجية التالي كيفية تعديل قيمة حقل في نموذج PDF باستخدام C ++.

// قم بتحميل ملف 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");
صورة لملف PDF تم إنشاؤه بواسطة نموذج التعليمات البرمجية

صورة لملف PDF تم إنشاؤه بواسطة نموذج التعليمات البرمجية

احذف حقل نموذج من نموذج PDF موجود باستخدام C ++

تتيح لك واجهة برمجة التطبيقات أيضًا حذف حقول النموذج من نماذج PDF الموجودة. فيما يلي خطوات حذف حقل نموذج من نموذج PDF.

يوضح نموذج التعليمات البرمجية التالي كيفية حذف حقل نموذج من نموذج PDF موجود باستخدام C ++.

// قم بتحميل ملف 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");
صورة لملف PDF تم إنشاؤه بواسطة نموذج التعليمات البرمجية

صورة لملف PDF تم إنشاؤه بواسطة نموذج التعليمات البرمجية

احصل على رخصة مجانية

يمكنك تجربة واجهة برمجة التطبيقات بدون قيود التقييم من خلال طلب ترخيص مؤقت مجاني.

استنتاج

في هذه المقالة ، تعلمت كيفية إنشاء نماذج في ملفات PDF باستخدام C ++. بالإضافة إلى ذلك ، تعلمت كيفية ملء الحقول الموجودة وتعديلها في نماذج PDF. لقد رأيت أيضًا كيفية إزالة حقل نموذج من نموذج PDF باستخدام Aspose.PDF لـ C ++ API. توفر واجهة برمجة التطبيقات مجموعة من الميزات الإضافية للعمل مع ملفات PDF التي يمكنك استكشافها بالتفصيل من خلال الاطلاع على الوثائق الرسمية. إذا كانت لديك أسئلة بخصوص أي جانب من جوانب واجهة برمجة التطبيقات ، فلا تتردد في الاتصال بنا على منتدى الدعم المجاني.

أنظر أيضا