إنشاء ملف Word DOCX ديناميكي عبر واجهة برمجة تطبيقات C++ مجانية
مكتبة C++ DOCX مفتوحة المصدر لتوليد مستندات Word (بتنسيق .docx) مباشرةً من كود C++. تسمح بإضافة جداول وصور، وتطبيق التنسيقات والأنماط على النص والمزيد.
ما هو MiniDocx؟
كان العمل مع مستندات Microsoft Word برمجيًا دائمًا مهمة صعبة لمطوري C++، وغالبًا ما يتطلب تبعيات ضخمة أو تثبيت برامج ملكية. تغير MiniDocx هذه الصورة بتقديم حل خفيف الوزن، حديث وسهل الاستخدام لإنشاء مستندات Word مباشرةً من تطبيقات C++. تلغي هذه المكتبة المفتوحة المصدر الحاجة إلى تثبيت Microsoft Office أو WPS Office مع توفير وظائف قوية للتعامل مع المستندات. تأتي MiniDocx مزودة بميزات أساسية تغطي الجوانب الأساسية لإنشاء مستندات Word. تدعم الأقسام والفقرات وتنسيق النص الغني والجداول والصور والأنماط والقوائم. يتيح هذا المجموعة الشاملة من الميزات للمطورين إنشاء مستندات معقدة ومنسقة جيدًا تلبي المعايير المهنية.
MiniDocx هي مكتبة C++ حديثة ومفتوحة المصدر تمكّن المطورين من إنشاء وتعديل مستندات Microsoft Word بتنسيق .docx برمجيًا — دون الحاجة إلى تثبيت Microsoft Word أو WPS Office. تم بناء بنية المكتبة حول معايير C++20 الحديثة، مستفيدًا من أحدث ميزات اللغة لتحسين الأداء، وسلامة الأنواع، ووضوح الشيفرة. واحدة من الخصائص البارزة في MiniDocx هي توافقها عبر المنصات. تعمل المكتبة بسلاسة على أنظمة التشغيل Windows وLinux وmacOS، مما يجعلها اختيارًا ممتازًا للمطورين الذين يبنون تطبيقات تحتاج إلى تشغيلها على منصات متعددة.
البدء مع MiniDocx
الطريقة الموصى بها لتثبيت MiniDocx هي عبر GitHub. يرجى استخدام الأمر التالي لتثبيت سلس.
تثبيت MiniDocx عبر GitHub
git clone git@github.com:totravel/minidocx.git
cd minidocx You can also download it directly from Aspose product page.إنشاء مستند Word Docx عبر C++
تجعل مكتبة MiniDocx المفتوحة المصدر من السهل على مطوري البرمجيات إنشاء وتعديل مستندات Word Docx داخل تطبيقات C++. تشمل المكتبة دعمًا لتطبيق التنسيق، وإضافة النصوص، والجداول، والصور داخل مستندات Word. أبسط طريقة لفهم MiniDocx هي من خلال مثال عملي. إنشاء مستند Word أساسي بنص منسق يوضح تصميم واجهة برمجة التطبيقات السهل للمكتبة وسير العمل المبسط.
كيفية إنشاء مستندات Word باستخدام مكتبة C++؟
#include "minidocx/minidocx.hpp"
#include
int main()
{
using namespace md;
try {
Document doc;
SectionPointer sect = doc.addSection();
ParagraphPointer para = sect->addParagraph();
para->prop_.align_ = Alignment::Centered;
RichTextPointer rich = para->addRichText("Happy Chinese New Year!");
rich->prop_.fontSize_ = 32;
rich->prop_.color_ = "FF0000";
doc.saveAs("a.docx");
}
catch (const Exception& ex) {
std::cerr << ex.what() << std::endl;
}
return 0;
}
إضافة جداول إلى المستندات عبر مكتبة C++
الجداول ضرورية لعرض البيانات المهيكلة في مستندات Word، وتوفر MiniDocx قدرات شاملة لإنشاء الجداول وتنسيقها. تتكون الجداول من صفوف وخلايا، حيث يمكن لكل خلية احتواء نص وتنسيق وحتى محتوى متداخل. يتضمن إنشاء جدول عدة خطوات: تعريف بنية الجدول، إضافة الصفوف، ملء الخلايا بالمحتوى، وتطبيق التنسيق. إليكم مثالًا تفصيليًا يوضح كيفية إنشاء جدول منسق داخل تطبيقات C++.
كيفية إنشاء جدول منسق في مستند Word عبر مكتبة C++؟
#include "minidocx/minidocx.hpp"
int main()
{
using namespace md;
try {
Document doc;
SectionPointer sect = doc.addSection();
// Create a table with 3 rows and 2 columns
TablePointer table = sect->addTable(3, 2);
// Access and populate cells
// First row - header
auto cell00 = table->cell(0, 0);
auto para00 = cell00->addParagraph();
auto text00 = para00->addRichText("Name");
text00->prop_.bold_ = true;
auto cell01 = table->cell(0, 1);
auto para01 = cell01->addParagraph();
auto text01 = para01->addRichText("Age");
text01->prop_.bold_ = true;
// Second row
auto cell10 = table->cell(1, 0);
auto para10 = cell10->addParagraph();
para10->addRichText("Alice");
auto cell11 = table->cell(1, 1);
auto para11 = cell11->addParagraph();
para11->addRichText("25");
// Third row
auto cell20 = table->cell(2, 0);
auto para20 = cell20->addParagraph();
para20->addRichText("Bob");
auto cell21 = table->cell(2, 1);
auto para21 = cell21->addParagraph();
para21->addRichText("30");
doc.saveAs("table_document.docx");
}
catch (const Exception& ex) {
std::cerr << ex.what() << std::endl;
}
return 0;
}
إدراج صور ورسومات إلى ملف Word DOCX
المحتوى المرئي يعزز قابلية قراءة المستند وتفاعله، مما يجعل دعم الصور ميزة حيوية لأي مكتبة توليد مستندات. تمكّن MiniDocx مطوري البرمجيات من إدراج الصور في المستندات مع التحكم في حجمها وتحديد موقعها. إضافة صور إلى مستند يتطلب تحديد مسار ملف الصورة وربما تعيين الأبعاد. إليكم مثالًا يوضح كيفية إدراج صورة في مستند Word عبر مكتبة C++.
كيفية إدراج صورة في مستند Word عبر مكتبة C++؟
#include "minidocx/minidocx.hpp"
int main()
{
using namespace md;
try {
Document doc;
SectionPointer sect = doc.addSection();
// Add a paragraph before the image
ParagraphPointer para1 = sect->addParagraph();
para1->addRichText("Below is an important diagram:");
// Add a paragraph containing the image
ParagraphPointer para2 = sect->addParagraph();
para2->prop_.align_ = Alignment::Centered;
// Insert the picture
PicturePointer pic = para2->addPicture("path/to/image.png");
pic->prop_.width_ = 400;
pic->prop_.height_ = 300;
// Add a paragraph after the image
ParagraphPointer para3 = sect->addParagraph();
para3->addRichText("Figure 1: Important visualization");
doc.saveAs("document_with_image.docx");
}
catch (const Exception& ex) {
std::cerr << ex.what() << std::endl;
}
return 0;
}
أقسام المستند وتخطيط الصفحة
توفر الأقسام الهيكلية للتحكم في خصائص تخطيط الصفحة داخل مستندات Word. يمكن لكل قسم أن يحتوي على إعدادات صفحة مختلفة، بما في ذلك حجم الصفحة، الاتجاه، الهوامش، الرؤوس، والتذييلات. يسمح هذا النهج القائم على الأقسام بإنشاء تخطيطات مستندات معقدة مع تكوينات صفحة متباينة. من الاستخدامات الشائعة للأقسام المتعددة إنشاء مستندات تحتوي على صفحات عمودية وأفقية معًا، مثل التقارير التي تشمل جداول واسعة أو مخططات تتطلب وضعية أفقية. إليكم مثالًا يوضح كيفية التعامل مع أقسام متعددة من مستندات Word داخل تطبيقات C++.
كيفية التعامل مع أقسام متعددة من مستندات Word عبر مكتبة C++؟
#include "minidocx/minidocx.hpp"
int main()
{
using namespace md;
try {
Document doc;
// First section with portrait orientation
SectionPointer sect1 = doc.addSection();
sect1->prop_.orientation_ = Orientation::Portrait;
sect1->prop_.pageWidth_ = 8.5 * 1440; // Letter size in twips
sect1->prop_.pageHeight_ = 11 * 1440;
ParagraphPointer para1 = sect1->addParagraph();
para1->addRichText("This is content in portrait orientation.");
// Second section with landscape orientation
SectionPointer sect2 = doc.addSection();
sect2->prop_.orientation_ = Orientation::Landscape;
sect2->prop_.pageWidth_ = 11 * 1440;
sect2->prop_.pageHeight_ = 8.5 * 1440;
ParagraphPointer para2 = sect2->addParagraph();
para2->addRichText("This content appears in landscape orientation.");
doc.saveAs("multi_section_document.docx");
}
catch (const Exception& ex) {
std::cerr << ex.what() << std::endl;
}
return 0;
}