1. Produkti
  2.   Tekstapstrāde
  3.   C++
  4.   MiniDocx
 
  

Dinamiska Word DOCX faila izveide, izmantojot bezmaksas C++ API

Atvērtā koda C++ DOCX bibliotēka, lai ģenerētu Word dokumentus (.docx formāts) tieši no C++ koda. Tā ļauj pievienot tabulas un attēlus, piemērot formātus un stilus tekstam un vairāk.

Kas ir MiniDocx?

Darbs ar Microsoft Word dokumentiem programmatiski tradicionāli ir bijis izaicinošs uzdevums C++ izstrādātājiem, bieži prasot apjomīgas atkarības vai īpašas programmatūras instalācijas. MiniDocx maina šo ainavu, piedāvājot vieglu, mūsdienīgu un lietotājam draudzīgu risinājumu Word dokumentu izveidei tieši no C++ lietojumprogrammu. Šī atvērtā koda bibliotēka likvidē vajadzību pēc Microsoft Office vai WPS Office instalēšanas, vienlaikus nodrošinot spēcīgu funkcionalitāti dokumentu manipulācijām. MiniDocx ir aprīkota ar būtiskām funkcijām, kas aptver pamata Word dokumentu izveides aspektus. Tā atbalsta sekcijas, rindkopas, bagātu teksta formatēšanu, tabulas, attēlus, stilus un sarakstus. Šis plašais funkciju klāsts ļauj izstrādātājiem izveidot sarežģītus, labi formatētus dokumentus, kas atbilst profesionāliem standartiem.

MiniDocx ir moderna, atvērtā koda C++ bibliotēka, kas ļauj izstrādātājiem programmatiski izveidot un manipulēt Microsoft Word .docx dokumentus — bez vajadzības instalēt Microsoft Word vai WPS Office. Bibliotēkas arhitektūra ir balstīta uz mūsdienīgajiem C++20 standartiem, izmantojot jaunākās valodas iespējas, lai uzlabotu veiktspēju, tipa drošību un koda skaidrību. Viena no izcilākajām MiniDocx īpašībām ir tās platformu neatkarība. Bibliotēka darbojas nevainojami gan Windows, gan Linux, gan macOS operētājsistēmās, padarot to par izcili piemērotu izstrādātājiem, kas veido lietojumprogrammas, kurām jādarbojas vairākās platformās.

Previous Next

Kā sākt ar MiniDocx

Ieteicamais veids, kā instalēt MiniDocx, ir caur GitHub. Lūdzu, izmantojiet šādu komandu, lai veiktu vienkāršu instalēšanu.

Instalēt MiniDocx caur GitHub

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

Word Docx dokumenta izveide, izmantojot C++

Atvērtā koda MiniDocx bibliotēka atvieglo programmatūras izstrādātājiem Word Docx dokumentu izveidi un manipulēšanu C++ lietojumprogrammās. Bibliotēka ietver atbalstu formatēšanas piemērošanai, teksta, tabulu un attēlu pievienošanai Word dokumentos. Vienkāršākais veids, kā izprast MiniDocx, ir praktiskais piemērs. Pamata Word dokumenta izveide ar formatētu tekstu demonstrē bibliotēkas intuitīvo API dizainu un vienkāršo darba plūsmu.

Kā izveidot Word dokumentus, izmantojot C++ bibliotēku?

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

Tabulu pievienošana dokumentiem, izmantojot C++ bibliotēku

Tabulas ir būtiskas strukturēta datu attēlošanai Word dokumentos, un MiniDocx nodrošina plašu tabulu izveides un formatēšanas iespēju klāstu. Tabulas sastāv no rindām un šūnām, kur katra šūna var saturēt tekstu, formatējumu un pat iekļautu saturu. Tabulas izveide ietver vairākus soļus: tabulas struktūras definēšana, rindu pievienošana, šūnu aizpildīšana ar saturu un formatēšanas piemērošana. Šeit ir detalizēts piemērs, kas parāda, kā programmatūras izstrādātāji var izveidot formatētu tabulu C++ lietojumprogrammās.

Kā izveidot formatētu tabulu Word dokumentā, izmantojot C++ bibliotēku?



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

Attēlu un fotoattēlu ievietošana Word DOCX failā

Vizuālais saturs uzlabo dokumenta lasāmību un iesaisti, padarot attēlu atbalstu par kritisku funkciju jebkurai dokumentu ģenerēšanas bibliotēkai. MiniDocx ļauj izstrādātājiem ievietot attēlus dokumentos, kontrolējot to izmērus un pozicionēšanu. Attēlu pievienošanai dokumentam ir jānorāda attēla faila ceļš un, ja nepieciešams, jāiestata izmēri. Šeit ir piemērs, kas demonstrē, kā ievietot attēlu Word dokumentā, izmantojot C++ bibliotēku.

Kā ievietot attēlu Word dokumentā, izmantojot C++ bibliotēku?

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

Dokumenta sekcijas un lapas izkārtojums

Sekcijas nodrošina struktūru lapas izkārtojuma īpašību kontrolei Word dokumentos. Katrai sekcijai var būt atšķirīgi lapas iestatījumi, tostarp lapas lielums, orientācija, robežas, galvenes un kājenes. Šī uz sekcijām balstītā arhitektūra ļauj veidot sarežģītus dokumentu izkārtojumus ar dažādiem lapas konfigurējumiem. Tipiska situācija, kurā tiek izmantotas vairākas sekcijas, ir dokumentu izveide ar gan portreta, gan ainavas lapām, piemēram, atskaitēs, kas ietver plašas tabulas vai diagrammas, kurām nepieciešama ainavas orientācija. Šeit ir piemērs, kas parāda, kā strādāt ar vairākām Word dokumentu sekcijām C++ lietojumprogrammās.

Kā strādāt ar vairākām Word dokumentu sekcijām, izmantojot C++ bibliotēku?


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

 Latviski