Dynamisk oprettelse af Word DOCX-fil via gratis C++‑API

Open source C++ DOCX-bibliotek til at generere Word-dokumenter (.docx-format) direkte fra C++-kode. Det tillader at tilføje tabeller og billeder, anvende formater og stilarter på tekst og mere.

Hvad er MiniDocx?

DocxFactory er et kraftfuldt, tværplatforms open‑source C++‑bibliotek designet til at generere Microsoft Word DOCX‑filer (OpenXML‑format) gennem skabelonbaseret dokumentoprettelse. Dette gratis bibliotek leveres med wrappers til flere programmeringssprog, inklusive C#, Java, Python og Progress 4GL, samt kommandolinjeværktøjer. Det, der adskiller DocxFactory, er dens skabelondrevne tilgang, som eliminerer behovet for, at udviklere skal forstå det komplekse OpenXML‑filformat. Biblioteket inkluderer understøttelse af forskellige vigtige tekstbehandlingsfunktioner, såsom skabelonbaseret dokumentgenerering, indsættelse/fjernelse af afsnit eller billeder, tekstformatering, arbejde med tabeller, sammensmeltning eller opdeling af celler, håndtering af lister, flersprogsunderstøttelse, omfattende stregkodeunderstøttelse, understøttelse af flere output‑formater osv.

DocxFactory er et moden, gratis, tværplatforms C/C++‑bibliotek (med flersprogede wrappers), som forenkler arbejdet med Microsoft Word .docx‑filer. Biblioteket er tværplatforms og fungerer gnidningsløst på de vigtigste operativsystemer (Windows, UNIX/Linux) – hvilket giver fleksibilitet til at implementere på servere, desktop eller indlejrede systemer. Biblioteket er licenseret under Apache 2.0‑licensen, så det er fuldstændigt gratis både til privat og kommerciel brug uden funktionelle begrænsninger eller tidsbegrænsninger. Uanset om du bygger virksomhedsrapporteringssystemer, automatiserede dokumentarbejdsgange eller simple mail‑merge‑applikationer, leverer DocxFactory de nødvendige værktøjer til effektivt at generere professionelle dokumenter.

Previous Next

Kom i gang med MiniDocx

Den anbefalede måde at installere MiniDocx på er via GitHub. Brug venligst følgende kommando for en problemfri installation.

Installer MiniDocx via GitHub

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

Opret Word Docx-dokument via C++

Open‑source‑biblioteket MiniDocx gør det nemt for softwareudviklere at oprette og manipulere Word Docx-dokumenter i C++‑applikationer. Biblioteket indeholder understøttelse af anvendelse af formatering, tilføjelse af tekst, tabeller og billeder i Word-dokumenter. Den simpleste måde at forstå MiniDocx på er gennem et praktisk eksempel. Oprettelse af et grundlæggende Word-dokument med formateret tekst demonstrerer bibliotekets intuitive API‑design og ligefremme arbejdsproces.

Hvordan opretter man Word-dokumenter ved hjælp af C++-biblioteket?

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

Tilføj tabeller til dokumenter via C++-bibliotek

Tabeller er afgørende for at præsentere strukturerede data i Word-dokumenter, og MiniDocx tilbyder omfattende muligheder for oprettelse og formatering af tabeller. Tabeller består af rækker og celler, hvor hver celle kan indeholde tekst, formatering og endda indlejret indhold. Oprettelse af en tabel involverer flere trin: definering af tabelstrukturen, tilføjelse af rækker, udfyldning af celler med indhold og anvendelse af formatering. Her er et detaljeret eksempel, der viser, hvordan softwareudviklere kan oprette en formateret tabel i C++‑apps.

Hvordan opretter man formateret tabel i et Word-dokument via C++-biblioteket?



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

Indsæt billeder og illustrationer i Word DOCX-fil

Visuelt indhold forbedrer dokumentets læsbarhed og engagement, hvilket gør billedstøtte til en kritisk funktion for enhver dokumentgenereringsbibliotek. MiniDocx gør det muligt for softwareudviklere at indsætte billeder i dokumenter med kontrol over størrelse og placering. Tilføjelse af billeder til et dokument kræver angivelse af billedfilens sti og eventuelt fastsættelse af dimensioner. Her er et eksempel, der viser, hvordan man indsætter et billede i et Word-dokument via C++‑biblioteket.

Hvordan indsætter man et billede i et Word-dokument via C++-biblioteket?

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

Dokumentsektioner og sideopsætning

Sektioner giver rammerne for at kontrollere sideopsætnings‑egenskaber i Word-dokumenter. Hver sektion kan have forskellige sideindstillinger, inklusive sidestørrelse, orientering, marginer, sidehoveder og sidefødder. Denne sektion‑baserede arkitektur muliggør komplekse dokumentlayout med varierende sidekonfigurationer. Et typisk anvendelsesområde for flere sektioner er at oprette dokumenter med både portræt‑ og landskabs‑sider, som rapporter der indeholder brede tabeller eller diagrammer, der kræver landskabsorientering. Her er et eksempel, der viser, hvordan man arbejder med flere sektioner i Word-dokumenter i C++‑applikationer.

Hvordan arbejder man med flere sektioner i Word-dokumenter via C++-biblioteket?


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

 Dansk