Creación de archivos Word DOCX dinámicos mediante API C++ gratuita
Biblioteca C++ de código abierto para generar documentos Word (.docx) directamente desde código C++. Permite agregar tablas e imágenes, aplicar formatos y estilos al texto y más.
¿Qué es MiniDocx?
Trabajar con documentos Microsoft Word de forma programática ha sido tradicionalmente una tarea desafiante para los desarrolladores de C++, a menudo requiriendo dependencias voluminosas o instalaciones de software propietario. MiniDocx cambia este panorama al ofrecer una solución ligera, moderna y fácil de usar para crear documentos Word directamente desde aplicaciones C++. Esta biblioteca de código abierto elimina la necesidad de instalaciones de Microsoft Office o WPS Office, al mismo tiempo que proporciona una funcionalidad robusta para la manipulación de documentos. MiniDocx incluye funciones esenciales que cubren los aspectos fundamentales de la creación de documentos Word. Soporta secciones, párrafos, formato de texto enriquecido, tablas, imágenes, estilos y listas. Este conjunto integral de funciones permite a los desarrolladores crear documentos complejos y bien formateados que cumplen con los estándares profesionales.
MiniDocx es una biblioteca C++ moderna y de código abierto que permite a los desarrolladores crear y manipular documentos Microsoft Word .docx de forma programática, sin necesidad de que Microsoft Word o WPS Office estén instalados. La arquitectura de la biblioteca se basa en los estándares modernos C++20, aprovechando las últimas características del lenguaje para un mejor rendimiento, seguridad de tipos y claridad del código. Una de sus principales características es la compatibilidad multiplataforma. La biblioteca funciona sin problemas en Windows, Linux y macOS, lo que la convierte en una excelente opción para desarrolladores que crean aplicaciones que deben ejecutarse en múltiples plataformas.
Comenzando con MiniDocx
La forma recomendada de instalar MiniDocx es a través de GitHub. Por favor, use el siguiente comando para una instalación sin problemas.
Instalar MiniDocx vía GitHub
git clone git@github.com:totravel/minidocx.git
cd minidocx You can also download it directly from Aspose product page.Crear documento Word Docx mediante C++
La biblioteca de código abierto MiniDocx facilita a los desarrolladores de software crear y manipular documentos Word Docx dentro de aplicaciones C++. La biblioteca incluye soporte para aplicar formato, agregar texto, tablas e imágenes dentro de documentos Word. La forma más simple de entender MiniDocx es a través de un ejemplo práctico. Crear un documento Word básico con texto formateado demuestra el diseño intuitivo de la API y el flujo de trabajo sencillo de la biblioteca.
¿Cómo crear documentos Word usando la biblioteca 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;
}
Agregar tablas a documentos mediante la biblioteca C++
Las tablas son esenciales para presentar datos estructurados en documentos Word, y MiniDocx ofrece capacidades completas de creación y formato de tablas. Las tablas constan de filas y celdas, y cada celda puede contener texto, formato e incluso contenido anidado. Crear una tabla implica varios pasos: definir la estructura de la tabla, agregar filas, rellenar celdas con contenido y aplicar formato. Aquí hay un ejemplo detallado que muestra cómo los desarrolladores pueden crear una tabla formateada dentro de aplicaciones C++.
¿Cómo crear una tabla con formato en un documento Word mediante la biblioteca 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;
}
Insertar imágenes y fotos en un archivo Word DOCX
El contenido visual mejora la legibilidad y el compromiso del documento, haciendo que el soporte de imágenes sea una característica crítica para cualquier biblioteca de generación de documentos. MiniDocx permite a los desarrolladores insertar imágenes en documentos con control sobre el tamaño y la posición. Agregar imágenes a un documento requiere especificar la ruta del archivo de imagen y, opcionalmente, establecer dimensiones. Aquí hay un ejemplo que muestra cómo insertar una imagen en un documento Word mediante la biblioteca C++.
¿Cómo insertar una imagen en un documento Word mediante la biblioteca 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;
}
Secciones del documento y diseño de página
Las secciones proporcionan el marco para controlar las propiedades del diseño de página dentro de los documentos Word. Cada sección puede tener diferentes configuraciones de página, incluyendo tamaño, orientación, márgenes, encabezados y pies de página. Esta arquitectura basada en secciones permite diseños de documentos complejos con configuraciones de página variables. Un caso de uso típico para múltiples secciones es crear documentos con páginas tanto en orientación vertical como horizontal, como informes que incluyen tablas anchas o gráficos que requieren orientación horizontal. Aquí hay un ejemplo que muestra cómo trabajar con múltiples secciones de documentos Word dentro de aplicaciones C++.
¿Cómo trabajar con múltiples secciones de documentos Word mediante la biblioteca 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;
}