API C++ gratuita para criar arquivos Word DOCX baseados em modelo

Uma biblioteca líder de código aberto e gratuita de processamento de texto C++ permite criar, editar, mesclar e converter arquivos Word DOCX programaticamente. Adicione códigos de barras, gráficos, texto, imagens e aplique formatação.

O que é DocxFactory?

DocxFactory é uma poderosa biblioteca C++ de código aberto e multiplataforma projetada para gerar arquivos Microsoft Word DOCX (formato OpenXML) por meio de criação de documentos baseada em modelo. Esta biblioteca gratuita inclui wrappers para várias linguagens de programação, incluindo C#, Java, Python e Progress 4GL, além de ferramentas de linha de comando. O que diferencia o DocxFactory é sua abordagem guiada por modelos, que elimina a necessidade de os desenvolvedores compreenderem o complexo formato de arquivo OpenXML. A biblioteca inclui suporte a diversos recursos importantes de processamento de texto, como geração de documentos baseada em modelo, inserção/remoção de parágrafos ou imagens, formatação de texto, trabalho com tabelas, mesclar ou dividir células, gerenciar listas, suporte multilíngue, suporte extensivo a códigos de barras, suporte a múltiplos formatos de saída e assim por diante.

DocxFactory é uma biblioteca C/C++ madura, gratuita e multiplataforma (com wrappers multilinguísticos) que simplifica o trabalho com arquivos Microsoft Word .docx. A biblioteca é multiplataforma e funciona perfeitamente nos principais sistemas operacionais (Windows, UNIX/Linux) — oferecendo flexibilidade para implantação em servidores, desktops ou sistemas embarcados. A biblioteca é licenciada sob a licença Apache 2.0, tornando-a totalmente gratuita para uso privado e comercial, sem limitações de recursos ou restrições de tempo. Seja construindo sistemas corporativos de relatórios, fluxos de trabalho automatizados de documentos ou aplicações simples de mala direta, o DocxFactory fornece as ferramentas necessárias para gerar documentos profissionais de forma eficiente.

Previous Next

Começando com o DocxFactory

A forma recomendada de instalar o DocxFactory é via GitHub. Por favor, use o comando a seguir para uma instalação tranquila.

Instalar DocxFactory via GitHub

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

Geração de Documentos Baseados em Modelo via C++

A filosofia central do DocxFactory gira em torno da simplicidade. Em vez de construir documentos programaticamente elemento por elemento, você cria um modelo no Microsoft Word — um arquivo DOCX regular com marcadores de posição — e mescla seus dados nele. Essa abordagem oferece várias vantagens, como desenvolvimento mais rápido, edição WYSIWYG, entre outras. Aqui está um exemplo útil que demonstra como gerar novos documentos Word a partir de um modelo usando a biblioteca C++.

Como Criar um Novo Documento a partir de um Modelo via 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;
}

Suporte Extensivo a Códigos de Barras em DOCX

A biblioteca de código aberto DocxFactory suporta uma ampla variedade de códigos de barras 1D e 2D, incluindo Code39, Code128, EAN, UPC, ISBN, Databar, códigos postais, PDF417, Data Matrix, QR Code e Maxi Code. Os códigos de barras são inseridos como campos nos modelos e renderizados automaticamente com base nos dados fornecidos. Isso a torna ideal para sistemas de gerenciamento de inventário, aplicações de envio e logística, soluções de rotulagem de produtos, sistemas de rastreamento de documentos, integração de ponto de venda no varejo e assim por diante.

Como Aplicar Formatação Avançada e Estilização em Documentos Word via 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;
}

Adicionar e Gerenciar Gráficos em Arquivos Word via C++

A biblioteca DocxFactory pode popular dados de gráficos dinamicamente, permitindo criar visualizações baseadas em dados. Gráficos definidos em seu modelo podem ter suas séries de dados atualizadas programaticamente, tornando possível gerar painéis executivos e relatórios analíticos. A biblioteca inclui suporte a uma lista completa de mais de 70 tipos de gráficos disponíveis no Microsoft Word, incluindo colunas, linhas, pizza, barras, áreas, dispersão, ações, superfície, rosca, bolha, radar, entre outros. Esse recurso permite relatórios financeiros dinâmicos com visualização de dados em tempo real, documentos de análise estatística, painéis de inteligência de negócios, relatórios de pesquisa científica, documentação de monitoramento de desempenho e assim por diante.

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

Formatação Avançada e Estilização em Arquivos DOCX

A biblioteca de código aberto DocxFactory mantém a formatação nativa do Word enquanto ajusta dinamicamente os estilos dentro de aplicações C++. A biblioteca inclui suporte a diversos recursos de formatação, como estilos de fonte, tamanhos e cores, alinhamento e espaçamento de parágrafos, tabelas com bordas personalizadas, cabeçalhos e rodapés, numeração de páginas e quebras de seção, estilos e temas personalizados, entre outros. O documento gerado preserva toda a formatação do modelo, garantindo consistência de marca e aparência profissional. O exemplo de código a seguir mostra como os desenvolvedores podem aplicar formatação condicional baseada em dados em aplicações 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;
}

 Português