Бесплатный C++ API для создания файлов Word DOCX на основе шаблонов
Ведущая бесплатная библиотека C++ с открытым исходным кодом для обработки текста позволяет программно создавать, редактировать, объединять и конвертировать файлы Word DOCX. Добавляйте графики со штрих‑кодами, текст, изображения и применяйте форматирование.
Что такое MiniDocx?
DocxFactory — мощная кроссплатформенная библиотека C++ с открытым исходным кодом, предназначенная для генерации файлов Microsoft Word DOCX (формат OpenXML) с помощью создания документов на основе шаблонов. Эта бесплатная библиотека поставляется с обёртками для нескольких языков программирования, включая C#, Java, Python и Progress 4GL, а также с инструментами командной строки. Что отличает DocxFactory, так это шаблонный подход, который устраняет необходимость разработчиков разбираться со сложным форматом файлов OpenXML. Библиотека включает поддержку различных важных функций обработки текста, таких как генерация документов на основе шаблонов, вставка/удаление абзацев или изображений, форматирование текста, работа с таблицами, объединение или разделение ячеек, управление списками, поддержка нескольких языков, обширная поддержка штрих‑кодов, поддержка множества форматов вывода и т.д.
DocxFactory — зрелая, бесплатная кроссплатформенная библиотека C/C++ (с обёртками для разных языков), упрощающая работу с файлами Microsoft Word .docx. Библиотека кроссплатформенная и плавно работает на основных операционных системах (Windows, UNIX/Linux), предоставляя гибкость развертывания на серверах, настольных компьютерах или встраиваемых системах. Библиотека лицензирована под лицензией Apache 2.0, что делает её полностью бесплатной как для частного, так и для коммерческого использования без ограничений функций или временных ограничений. Независимо от того, разрабатываете ли вы корпоративные системы отчётности, автоматизированные рабочие процессы с документами или простые приложения для слияния почты, DocxFactory предоставляет необходимые инструменты для эффективного создания профессиональных документов.
Начало работы с 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;
}