Création d'un fichier Word DOCX dynamique via une API C++ gratuite

Bibliothèque C++ open source pour générer des documents Word (.docx) directement à partir du code C++. Elle permet d'ajouter des tableaux & des images, d'appliquer des formats & des styles au texte & plus encore.

Qu’est‑ce que MiniDocx ?

Travailler avec les documents Microsoft Word de manière programmatique a traditionnellement été une tâche difficile pour les développeurs C++, nécessitant souvent des dépendances lourdes ou des installations de logiciels propriétaires. MiniDocx change ce paysage en offrant une solution légère, moderne et conviviale pour créer des documents Word directement à partir d’applications C++. Cette bibliothèque open source élimine le besoin d’installer Microsoft Office ou WPS Office tout en offrant une fonctionnalité robuste de manipulation de documents. MiniDocx propose des fonctionnalités essentielles qui couvrent les aspects fondamentaux de la création de documents Word. Elle prend en charge les sections, les paragraphes, le formatage de texte enrichi, les tableaux, les images, les styles et les listes. Cette gamme complète de fonctionnalités permet aux développeurs de créer des documents complexes et bien formatés répondant aux exigences professionnelles.

MiniDocx est une bibliothèque C++ moderne et open source qui permet aux développeurs de créer et de manipuler des documents Microsoft Word .docx de manière programmatique — sans nécessiter l’installation de Microsoft Word ou de WPS Office. Son architecture repose sur les normes modernes C++20, exploitant les dernières fonctionnalités du langage pour de meilleures performances, une sécurité de type accrue et une clarté du code. L’une des caractéristiques majeures de MiniDocx est sa compatibilité multiplateforme. La bibliothèque fonctionne de manière fluide sous Windows, Linux et macOS, ce qui en fait un excellent choix pour les développeurs qui construisent des applications devant fonctionner sous plusieurs plateformes.

Previous Next

Commencer avec MiniDocx

Le moyen recommandé d’installer MiniDocx est via GitHub. Veuillez utiliser la commande suivante pour une installation fluide.

Installer MiniDocx via GitHub

git clone git@github.com:totravel/minidocx.git 
cd minidocx  
You can also download it directly from Aspose product page.

Création de document Word Docx via C++

La bibliothèque open source MiniDocx facilite la création et la manipulation de documents Word Docx à l’intérieur des applications C++. Elle inclut le support de l’application de formatage, de l’ajout de texte, de tables et d’images dans les documents Word. La façon la plus simple de comprendre MiniDocx est à travers un exemple pratique. Créer un document Word de base avec du texte formaté démontre la conception intuitive de l’API et le flux de travail simple de la bibliothèque.

Comment créer un nouveau document à partir d’un modèle via la bibliothèque 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;
}

Ajout de tables aux documents via la bibliothèque C++

Les tableaux sont essentiels pour présenter des données structurées dans les documents Word, et MiniDocx offre des capacités complètes de création et de formatage de tables. Les tables sont constituées de lignes et de cellules, chaque cellule pouvant contenir du texte, du formatage et même du contenu imbriqué. Créer une table implique plusieurs étapes : définir la structure de la table, ajouter des lignes, remplir les cellules avec du contenu et appliquer le formatage. Voici un exemple détaillé montrant comment les développeurs peuvent créer une table formatée dans des applications C++.

Comment appliquer un formatage avancé et du style dans les documents Word via la bibliothèque 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;
}

Insertion d'images et de photos dans un fichier Word DOCX

Le contenu visuel améliore la lisibilité et l'engagement du document, faisant du support d'images une caractéristique cruciale pour toute bibliothèque de génération de documents. MiniDocx permet aux développeurs d’insérer des images dans les documents avec un contrôle sur la taille et le positionnement. Ajouter des images à un document nécessite de spécifier le chemin du fichier image et éventuellement de définir les dimensions. Voici un exemple montrant comment insérer une image dans un document Word via la bibliothèque 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;
}

Sections du document et mise en page

Les sections offrent le cadre pour contrôler les propriétés de mise en page des pages dans les documents Word. Chaque section peut avoir des paramètres de page différents, notamment la taille de la page, l’orientation, les marges, les en‑têtes et les pieds de page. Cette architecture basée sur les sections permet des mises en page de documents complexes avec des configurations de pages variées. Un cas d’utilisation typique pour plusieurs sections consiste à créer des documents avec à la fois des pages en orientation portrait et paysage, comme des rapports incluant de larges tableaux ou des graphiques nécessitant une orientation paysage. Voici un exemple montrant comment travailler avec plusieurs sections de documents Word dans des applications 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;
}

 Français