ایجاد فایل Word DOCX دینامیک از طریق API رایگان C++

کتابخانهٔ منبع باز C++ برای DOCX که به‌صورت مستقیم از کد C++ اسناد Word (فرمت .docx) تولید می‌کند. این امکان افزودن جدول‌ها و تصویرها، اعمال قالب‌ها و سبک‌ها به متن و موارد دیگر را می‌دهد.

MiniDocx چیست؟

DocxFactory یک کتابخانهٔ قدرتمند و چند‌سکویی متن‌باز C++ است که برای تولید فایل‌های Microsoft Word DOCX (فرمت OpenXML) از طریق ایجاد سند مبتنی بر قالب طراحی شده است. این کتابخانه رایگان شامل wrapperهایی برای چندین زبان برنامه‌نویسی از جمله C#، Java، Python و Progress 4GL به‌همراه ابزارهای خط فرمان می‌باشد. ویژگی منحصر به‌فرد DocxFactory رویکرد مبتنی بر قالب است که نیاز به درک فرمت پیچیدهٔ OpenXML توسط توسعه‌دهندگان را حذف می‌کند. این کتابخانه از قابلیت‌های مهم پردازش متن مانند تولید سند مبتنی بر قالب، درج/حذف پاراگراف‌ها یا تصویرها، قالب‌بندی متن، کار با جدول‌ها، ادغام یا تقسیم سلول‌ها، مدیریت فهرست‌ها، پشتیبانی چندزبانه، پشتیبانی گسترده از بارکدها، پشتیبانی از فرمت‌های خروجی متعدد و غیره پشتیبانی می‌کند.

MiniDocx یک کتابخانهٔ مدرن و متن‌باز C++ است که به توسعه‌دهندگان امکان ایجاد و مدیریت اسناد Microsoft Word .docx را به‌صورت برنامه‌نویسی‌ای فراهم می‌کند — بدون نیاز به نصب Microsoft Word یا WPS Office. معماری این کتابخانه بر پایهٔ استانداردهای مدرن C++20 ساخته شده است و از جدیدترین ویژگی‌های زبان برای عملکرد بهتر، ایمنی نوع و وضوح کد بهره می‌برد. یکی از ویژگی‌های برجستهٔ MiniDocx سازگاری چند‌پلتفرمی آن است. این کتابخانه به‌صورت یکپارچه بر روی سیستم‌عامل‌های Windows، Linux و macOS کار می‌کند و انتخابی عالی برای توسعه‌دهندگانی است که برنامه‌هایی می‌سازند که باید بر روی چندین پلتفرم اجرا شوند.

Previous Next

شروع کار با 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 پایه با متن قالب‌بندی‌شده، طراحی API بصری کتابخانه و جریان کاری ساده آن را نشان می‌دهد.

چگونه یک سند جدید را از قالب با کتابخانهٔ 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++ درج کنیم.

How to Insert an Image into a Word Document via C++ library?

#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++ کار کنیم.

How to Work with Multiple Sections of Word Documents via C++ Library?


#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;
}

 فارسی