Dinaminis Word DOCX failų kūrimas naudojant nemokamą C++ API
Atviro kodo C++ DOCX biblioteka, skirta generuoti Word dokumentus (.docx formatas) tiesiogiai iš C++ kodo. Ji leidžia pridėti lenteles ir vaizdus, taikyti formatavimą ir stilius tekstui ir dar daugiau.
Kas yra MiniDocx?
Dirbti su Microsoft Word dokumentais programiškai tradiciškai buvo sudėtinga užduotis C++ kūrėjams, dažnai reikalaujanti didelių priklausomybių arba nuosavybinių programų įdiegimo. MiniDocx pakeičia šį kraštovaizdį, siūlydamas lengvą, modernią ir vartotojui patogią priemonę Word dokumentų kūrimui tiesiogiai iš C++ programų. Ši atviro kodo biblioteka pašalina poreikį įdiegti Microsoft Office ar WPS Office, suteikdama didelį funkcionalumą dokumentų tvarkymui. MiniDocx turi svarbias funkcijas, kurios apima pagrindinius Word dokumentų kūrimo aspektus. Ji palaiko sekcijas, pastraipas, turtingo teksto formatavimą, lenteles, paveikslus, stilius ir sąrašus. Ši išsami funkcijų rinkinys leidžia kūrėjams kurti sudėtingus, gerai suformatuotus dokumentus, atitinkančius profesinius standartus.
MiniDocx yra moderni, atviro kodo C++ biblioteka, leidžianti kūrėjams programiškai kurti ir tvarkyti Microsoft Word .docx dokumentus – be poreikio įdiegti Microsoft Word ar WPS Office. Bibliotekos architektūra paremta šiuolaikiniais C++20 standartais, naudojant naujausias kalbos savybes geresniam našumui, tipų saugumui ir kodo aiškumui. Vienas iš išskirtinių MiniDocx bruožų – platformų nepriklausomumas. Biblioteka sklandžiai veikia Windows, Linux ir macOS operacinėse sistemose, todėl yra puikus pasirinkimas kūrėjams, kuriant programėles, kurios turi veikti keliomis platformomis.
Pradžia su MiniDocx
Rekomenduojamas MiniDocx įdiegimo būdas yra per GitHub. Prašome naudoti šią komandą sklandžiam įdiegimui.
Įdiegti MiniDocx per GitHub
git clone git@github.com:totravel/minidocx.git
cd minidocx You can also download it directly from Aspose product page.Word Docx dokumento kūrimas naudojant C++
Atviro kodo MiniDocx biblioteka lengvina programinės įrangos kūrėjams kurti ir tvarkyti Word Docx dokumentus C++ programose. Biblioteka apima formatavimo, teksto, lentelių ir vaizdų pridėjimo palaikymą Word dokumentuose. Paprasčiausias būdas suprasti MiniDocx yra per praktinį pavyzdį. Pagrindinio Word dokumento sukūrimas su formatavimu rodo bibliotekoje intuityvų API dizainą ir paprastą darbo eigą.
Kaip naudoti C++ biblioteką Word dokumentų kūrimui?
#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;
}
Lentelių pridėjimas į dokumentus naudojant C++ biblioteką
Lentelės yra būtinos struktūruotų duomenų pateikimui Word dokumentuose, ir MiniDocx suteikia išsamias lentelių kūrimo ir formatavimo galimybes. Lentelės susideda iš eilučių ir langelių, kuriuose kiekvienas langelis gali turėti tekstą, formatavimą ir net įterptą turinį. Lentelės kūrimas apima kelis žingsnius: lentelės struktūros apibrėžimą, eilučių pridėjimą, langelių užpildymą turiniu ir formatavimo taikymą. Čia pateikiamas išsamus pavyzdys, kaip programinės įrangos kūrėjai gali sukurti formatuotą lentelę C++ programose.
Kaip sukurti formatuotą lentelę Word dokumente naudojant C++ biblioteką?
#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;
}
Vaizdų ir paveikslų įterpimas į Word DOCX failą
Vizualinis turinys gerina dokumento skaitomumą ir įtraukumą, todėl vaizdų palaikymas yra svarbi bet kurios dokumentų generavimo bibliotekos savybė. MiniDocx leidžia programinės įrangos kūrėjams įterpti vaizdus į dokumentus, kontroliuojant dydį ir poziciją. Vaizdų pridėjimui prie dokumento reikia nurodyti vaizdo failo kelią ir, jei reikia, nustatyti matmenis. Čia pateikiamas pavyzdys, kaip įterpti vaizdą į Word dokumentą naudojant C++ biblioteką.
Kaip įterpti vaizdą į Word dokumentą naudojant C++ biblioteką?
#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;
}
Dokumento sekcijos ir puslapio išdėstymas
Sekcijos suteikia struktūrą, leidžiančią valdyti puslapio išdėstymo savybes Word dokumentuose. Kiekviena sekcija gali turėti skirtingus puslapio nustatymus, įskaitant puslapio dydį, orientaciją, paraštes ir poraštes. Ši sekcijomis pagrįsta architektūra leidžia kurti sudėtingus dokumentų išdėstymus su įvairiais puslapio konfigūracijomis. Įprastas kelių sekcijų naudojimo atvejis – dokumentų kūrimas su tiek stačiosiomis, tiek gulsčiomis puslapiais, pavyzdžiui, ataskaitų, kurios apima plačias lenteles arba diagramas, reikalaujančias gulsčios orientacijos. Čia pateikiamas pavyzdys, kaip dirbti su keliomis Word dokumentų sekcijomis C++ programose.
Kaip dirbti su keliais Word dokumentų sekcijomis naudojant C++ biblioteką?
#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;
}