Creazione di file Word DOCX dinamici tramite API C++ gratuita

Una libreria C++ open source per DOCX che consente di creare, modificare, fondere e convertire file Word DOCX in modo programmatico. Aggiungi grafici con codici a barre, testo, immagini e applica la formattazione.

Cos'è MiniDocx?

MiniDocx è una potente libreria C++ open source multipiattaforma progettata per generare file Microsoft Word DOCX (formato OpenXML) attraverso la creazione di documenti basata su modello. Questa libreria gratuita include wrapper per diversi linguaggi di programmazione, tra cui C#, Java, Python e Progress 4GL, oltre a strumenti da riga di comando. Ciò che distingue MiniDocx è il suo approccio basato su modello, che elimina la necessità per gli sviluppatori di comprendere il complesso formato di file OpenXML. La libreria include supporto per varie funzionalità importanti di elaborazione del testo, come la generazione di documenti basata su modello, inserimento/rimozione di paragrafi o immagini, formattazione del testo, lavoro con tabelle, fusione o divisione di celle, gestione di elenchi, supporto multilingua, ampio supporto ai codici a barre, supporto a più formati di output ecc.

MiniDocx è una libreria C/C++ matura, gratuita e multipiattaforma (con wrapper multilingua) che semplifica il lavoro con i file Microsoft Word .docx. La libreria è multipiattaforma e funziona senza problemi sui principali sistemi operativi (Windows, UNIX/Linux), offrendo flessibilità per il deployment su server, desktop o sistemi embedded. La libreria è rilasciata sotto licenza Apache 2.0, rendendola completamente gratuita sia per uso privato che commerciale, senza alcuna limitazione di funzionalità o restrizioni temporali. Che si tratti di costruire sistemi di reporting aziendali, workflow documentali automatizzati o semplici applicazioni di stampa unione, MiniDocx fornisce gli strumenti necessari per generare documenti professionali in modo efficiente.

Previous Next

Iniziare con MiniDocx

Il modo consigliato per installare MiniDocx è tramite GitHub. Usa il comando seguente per un'installazione fluida.

Installa MiniDocx via GitHub

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

Generazione di documenti basata su modello tramite C++

La filosofia centrale di MiniDocx ruota attorno alla semplicità. Invece di costruire i documenti programmaticamente elemento per elemento, crei un modello in Microsoft Word — un file DOCX regolare con segnaposti — e unisci i tuoi dati al suo interno. Questo approccio offre diversi vantaggi, come uno sviluppo più rapido, editing WYSIWYG e altro ancora. Ecco un esempio utile che dimostra come generare nuovi documenti Word da un modello usando la libreria C++.

Come creare un nuovo documento da un modello tramite la libreria 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;
}

Aggiungi tabelle ai documenti tramite la libreria C++

La libreria open source MiniDocx supporta una vasta gamma di codici a barre 1D e 2D, tra cui Code39, Code128, EAN, UPC, ISBN, Databar, codici postali, PDF417, Data Matrix, QR Code e Maxi Code. I codici a barre sono inseriti come campi nei modelli e renderizzati automaticamente in base ai dati forniti. Questo lo rende ideale per sistemi di gestione dell'inventario, applicazioni di spedizione e logistica, soluzioni di etichettatura dei prodotti, sistemi di tracciamento dei documenti, integrazione di punti vendita al dettaglio e così via.

Come applicare formattazione avanzata e stili all'interno dei documenti Word tramite la libreria 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;
}

Inserisci immagini e foto nel file Word DOCX

La libreria MiniDocx può popolare dinamicamente i dati dei grafici, consentendoti di creare visualizzazioni basate sui dati. I grafici definiti nel tuo modello possono avere le serie dati aggiornate programmaticamente, rendendo possibile generare cruscotti esecutivi e report analitici. La libreria include il supporto per oltre 70 tipi di grafici disponibili in Microsoft Word, tra cui Colonna, Linea, Torta, Barre, Area, Dispersione, Azioni, Superficie, Ciambella, Bolla, Radar e così via. Questa funzionalità consente report finanziari dinamici con visualizzazione dati in tempo reale, documenti di analisi statistica, dashboard di business intelligence, report di ricerca scientifica, documentazione di tracciamento delle prestazioni e così via.

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

Sezioni del documento e layout della pagina

La libreria open source MiniDocx mantiene la formattazione nativa di Word mentre regola dinamicamente gli stili all'interno delle applicazioni C++. La libreria include supporto per varie funzionalità di formattazione, come stili di carattere, dimensioni e colori, allineamento e spaziatura dei paragrafi, tabelle con bordi personalizzati, intestazioni e piè di pagina, numeri di pagina e interruzioni di sezione, stili e temi personalizzati, ecc. Il documento generato preserva tutta la formattazione del modello, garantendo coerenza di branding e aspetto professionale. L'esempio di codice seguente mostra come gli sviluppatori possano applicare formattazione condizionale basata sui dati nelle app 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;
}

 Italiano