Vytváření dynamických Word DOCX souborů pomocí bezplatného C++ API

Open-source C++ DOCX knihovna pro generování Word dokumentů (.docx formát) přímo z C++ kódu. Umožňuje přidávat tabulky a obrázky, aplikovat formáty a styly na text a další.

Co je MiniDocx?

Práce s dokumenty Microsoft Word programově byla tradičně náročná úloha pro vývojáře v C++, často vyžadující těžkopádné závislosti nebo proprietární softwarové instalace. MiniDocx mění tento stav tím, že nabízí lehké, moderní a uživatelsky přívětivé řešení pro vytváření Word dokumentů přímo z C++ aplikací. Tato open-source knihovna eliminuje potřebu instalace Microsoft Office nebo WPS Office a zároveň poskytuje robustní funkčnost pro manipulaci s dokumenty. MiniDocx je vybaven nezbytnými funkcemi, které pokrývají základní aspekty tvorby Word dokumentů. Podporuje sekce, odstavce, pokročilé formátování textu, tabulky, obrázky, styly a seznamy. Tento komplexní soubor funkcí umožňuje vývojářům vytvářet složité, dobře formátované dokumenty splňující profesionální standardy.

MiniDocx je moderní open-source knihovna v C++, která umožňuje vývojářům programově vytvářet a manipulovat s dokumenty Microsoft Word .docx — bez nutnosti instalace Microsoft Word nebo WPS Office. Architektura knihovny je postavena na moderních standardech C++20, využívajících nejnovější jazykové funkce pro lepší výkon, typovou bezpečnost a přehlednost kódu. Jednou z výjimečných vlastností MiniDocx je její multiplatformní kompatibilita. Knihovna funguje plynule na Windows, Linuxu i macOS, což z ní činí vynikající volbu pro vývojáře, kteří vytvářejí aplikace běžící na více platformách.

Previous Next

Začínáme s MiniDocx

Doporučený způsob instalace MiniDocx je přes GitHub. Pro hladkou instalaci použijte následující příkaz.

Instalovat MiniDocx přes GitHub

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

Vytváření Word Docx dokumentu pomocí C++

Open-source knihovna MiniDocx usnadňuje vývojářům softwaru vytvářet a manipulovat s Word Docx dokumenty v C++ aplikacích. Knihovna zahrnuje podporu pro aplikaci formátování, přidávání textu, tabulek a obrázků do Word dokumentů. Nejjednodušší způsob, jak pochopit MiniDocx, je prostřednictvím praktického příkladu. Vytvoření základního Word dokumentu s formátovaným textem demonstruje intuitivní návrh API knihovny a přehledný pracovní tok.

Jak vytvořit Word dokumenty pomocí C++ knihovny?

#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;
}

Přidat tabulky do dokumentů pomocí C++ knihovny

Tabulky jsou nezbytné pro prezentaci strukturovaných dat ve Word dokumentech a MiniDocx poskytuje komplexní možnosti tvorby a formátování tabulek. Tabulky se skládají z řádků a buněk, přičemž každá buňka může obsahovat text, formátování a dokonce i vnořený obsah. Vytvoření tabulky zahrnuje několik kroků: definování struktury tabulky, přidání řádků, naplnění buněk obsahem a aplikaci formátování. Níže je podrobný příklad, který ukazuje, jak vývojáři mohou vytvořit formátovanou tabulku v C++ aplikacích.

Jak vytvořit formátovanou tabulku ve Word dokumentu pomocí C++ knihovny?



#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;
}

Vložit obrázky a grafiku do Word DOCX souboru

Vizuální obsah zvyšuje čitelnost a atraktivitu dokumentu, což činí podporu obrázků kritickou funkcí pro každou knihovnu pro generování dokumentů. MiniDocx umožňuje vývojářům vkládat obrázky do dokumentů s kontrolou nad velikostí a umístěním. Přidání obrázků do dokumentu vyžaduje zadání cesty k souboru obrázku a volitelně nastavení rozměrů. Zde je příklad, který ukazuje, jak vložit obrázek do Word dokumentu pomocí C++ knihovny.

Jak vložit obrázek do Word dokumentu pomocí C++ knihovny?

#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;
}

Sekce dokumentu a rozvržení stránky

Sekce poskytují rámec pro kontrolu vlastností rozvržení stránky ve Word dokumentech. Každá sekce může mít odlišná nastavení stránky, včetně velikosti stránky, orientace, okrajů, záhlaví a patiček. Tato architektura založená na sekcích umožňuje komplexní rozvržení dokumentů s různými konfiguracemi stránek. Typickým případem použití více sekcí je vytváření dokumentů s portrétními i krajinářskými stránkami, například zprávy, které obsahují široké tabulky nebo grafy vyžadující krajinářskou orientaci. Níže je příklad, který ukazuje, jak pracovat s více sekcemi Word dokumentů v C++ aplikacích.

Jak pracovat s více sekcemi Word dokumentů pomocí C++ knihovny?


#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;
}

 Čeština