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