API C++ gratuit pentru a crea fișiere Word DOCX bazate pe șabloane
O bibliotecă de procesare text C++ gratuită și cu sursă deschisă de top permite crearea, editarea, îmbinarea și conversia fișierelor Word DOCX programatic. Adaugă grafice cu coduri de bare, text, imagini și aplică formatare.
Ce este DocxFactory?
DocxFactory este o bibliotecă C++ puternică, multiplatformă și cu sursă deschisă, concepută pentru generarea fișierelor Microsoft Word DOCX (format OpenXML) prin crearea de documente bazate pe șabloane. Această bibliotecă gratuită vine cu wrapper-e pentru mai multe limbaje de programare, inclusiv C#, Java, Python și Progress 4GL, precum și cu instrumente de linie de comandă. Ce diferențiază DocxFactory este abordarea sa bazată pe șabloane, care elimină nevoia ca dezvoltatorii să înțeleagă formatul complex de fișiere OpenXML. Biblioteca include suport pentru diverse funcționalități importante de procesare a textului, cum ar fi generarea de documente bazate pe șabloane, inserarea/ștergerea paragrafelor sau imaginilor, formatarea textului, lucrul cu tabele, îmbinarea sau divizarea celulelor, gestionarea listelor, suport multilingv, suport extins pentru coduri de bare, suport pentru multiple formate de ieșire etc.
DocxFactory este o bibliotecă C/C++ matură, gratuită și multiplatformă (cu wrapper-e multilingve) care simplifică lucrul cu fișierele Microsoft Word .docx. Biblioteca este multiplatformă și funcționează fără probleme pe principalele sisteme de operare (Windows, UNIX/Linux) — oferind flexibilitate pentru implementare pe servere, desktop sau sisteme încorporate. Biblioteca este licențiată sub licența Apache 2.0, fiind complet gratuită atât pentru utilizare privată, cât și comercială, fără nicio limitare de funcționalități sau restricții de timp. Indiferent dacă dezvolți sisteme de raportare enterprise, fluxuri de lucru automatizate pentru documente sau aplicații simple de fuziune de corespondență, DocxFactory oferă uneltele necesare pentru a genera documente profesionale eficient.
Începerea utilizării DocxFactory
Cea mai recomandată metodă de instalare a DocxFactory este prin GitHub. Vă rugăm să utilizați comanda următoare pentru o instalare fără probleme.
Instalează DocxFactory prin GitHub
git clone git@github.com:totravel/minidocx.git
cd minidocx You can also download it directly from Aspose product page.Generarea de documente bazate pe șablon prin C++
Filosofia de bază a DocxFactory se învârte în jurul simplității. În loc să construiești programatic documente element cu element, creezi un șablon în Microsoft Word — un fișier DOCX obișnuit cu marcaje de poziție — și îmbini datele tale în el. Această abordare oferă mai multe avantaje, cum ar fi dezvoltare mai rapidă, editare WYSIWYG și altele. Iată un exemplu util care demonstrează cum să generezi noi documente Word dintr-un șablon utilizând biblioteca C++.
Cum să creezi un document nou din șablon prin 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;
}
Suport extins pentru coduri de bare în DOCX
Biblioteca open source DocxFactory suportă o gamă extinsă de coduri de bare 1D și 2D, inclusiv Code39, Code128, EAN, UPC, ISBN, Databar, Coduri poștale, PDF417, Data Matrix, QR Code și Maxi Code. Codurile de bare sunt inserate ca câmpuri în șabloane și sunt redate automat pe baza datelor furnizate. Acest lucru o face ideală pentru sisteme de gestionare a inventarului, aplicații de expediere și logistică, soluții de etichetare a produselor, sisteme de urmărire a documentelor, integrare cu punctele de vânzare în retail și altele.
Cum să aplici formatare și stilizare avansată în documentele Word prin 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;
}
Adaugă & Gestionează grafice în fișiere Word prin C+
Biblioteca DocxFactory poate popula dinamic datele diagramelor, permițând crearea de vizualizări bazate pe date. Graficele definite în șablon pot avea seriile de date actualizate programatic, făcând posibilă generarea de panouri de control executive și rapoarte analitice. Biblioteca include suport pentru o listă completă de peste 70 de tipuri de grafice disponibile în Microsoft Word, inclusiv Coloane, Linii, Plăcintă, Bare, Zonă, Împrăștiere, Acțiuni, Suprafață, Gogoașă, Bula, Radar și altele. Această funcție permite rapoarte financiare dinamice cu vizualizare de date în timp real, documente de analiză statistică, panouri de inteligență de afaceri, rapoarte științifice, documentație de urmărire a performanței și altele.
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;
}
Formatare și stilizare avansată în fișiere DOCX
Biblioteca open source DocxFactory păstrează formatarea nativă a Word-ului în timp ce ajustează dinamic stilurile în aplicațiile C++. Biblioteca include suport pentru diverse caracteristici de formatare, cum ar fi stiluri de font, dimensiuni și culori, alinierea și spațierea paragrafelor, tabele cu borduri personalizate, anteturi și subsoluri, numerotarea paginilor și întreruperi de secțiune, stiluri și teme personalizate etc. Documentul generat păstrează toate formatele din șablon, asigurând o identitate de brand coerentă și o aparență profesională. Exemplul de cod de mai jos arată cum dezvoltatorii pot aplica formatare condiționată pe baza datelor în aplicațiile 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;
}