Създаване на динамичен Word DOCX файл чрез безплатно C++ API

Библиотека с отворен код на C++ за генериране на 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, което я прави отличен избор за разработчици, създаващи приложения, които трябва да се изпълняват на различни платформи.

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‑то и директния работен процес.

Как да създадем 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;
}

 Български