Pembuatan File Word DOCX Dinamis melalui API C++ Gratis
Perpustakaan DOCX C++ Sumber Terbuka Gratis terdepan yang memungkinkan Membuat, Mengedit, Menggabungkan, dan Mengonversi File Word DOCX secara Programatis. Tambahkan Grafik Barcode, Teks, Gambar dan Terapkan Pemformatan.
Apa itu MiniDocx?
DocxFactory adalah perpustakaan C++ sumber terbuka yang kuat dan lintas platform yang dirancang untuk menghasilkan file Microsoft Word DOCX (format OpenXML) melalui pembuatan dokumen berbasis template. Perpustakaan gratis ini dilengkapi dengan wrapper untuk banyak bahasa pemrograman termasuk C#, Java, Python, dan Progress 4GL, serta alat baris perintah. Keunggulan DocxFactory terletak pada pendekatan berbasis templatenya yang menghilangkan kebutuhan bagi pengembang untuk memahami format file OpenXML yang kompleks. Perpustakaan ini mencakup dukungan untuk berbagai fitur penting pemrosesan kata, seperti pembuatan dokumen berbasis template, Menyisipkan / menghapus paragraf atau gambar, pemformatan teks, bekerja dengan tabel, menggabungkan atau memisahkan sel, mengelola daftar, dukungan multibahasa, dukungan barcode luas, dukungan format output multiple, dan sebagainya.
MiniDocx adalah perpustakaan C/C++ matang, gratis, lintas platform (dengan wrapper multibahasa) yang menyederhanakan pekerjaan dengan file Microsoft Word .docx. Perpustakaan ini lintas platform dan berjalan mulus pada sistem operasi utama (Windows, UNIX/Linux) — memberi fleksibilitas untuk diterapkan pada server, desktop, atau sistem tertanam. Perpustakaan ini dilisensikan di bawah lisensi Apache 2.0, sehingga sepenuhnya gratis untuk penggunaan pribadi maupun komersial tanpa batasan fitur atau batasan waktu. Baik Anda membangun sistem pelaporan perusahaan, alur kerja dokumen otomatis, atau aplikasi penggabungan surat sederhana, MiniDocx menyediakan alat yang dibutuhkan untuk menghasilkan dokumen profesional secara efisien.
Memulai dengan MiniDocx
Cara rekomendasi untuk menginstal MiniDocx adalah melalui GitHub. Harap gunakan perintah berikut untuk instalasi yang mulus.
Instal MiniDocx via GitHub
git clone git@github.com:totravel/minidocx.git
cd minidocx You can also download it directly from Aspose product page.Pembuatan Dokumen Berbasis Template via C++
Filosofi inti MiniDocx berpusat pada kesederhanaan. Alih-alih membangun dokumen secara programatik elemen demi elemen, Anda membuat template di Microsoft Word — file DOCX biasa dengan placeholder — dan menggabungkan data Anda ke dalamnya. Pendekatan ini menawarkan beberapa keuntungan, seperti pengembangan lebih cepat, penyuntingan WYSIWYG, dan lain-lain. Berikut contoh yang berguna yang menunjukkan cara menghasilkan dokumen World baru dari sebuah temple menggunakan perpustakaan C++.
Bagaimana Membuat Dokumen Baru dari Template via Perpustakaan 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;
}
Dukungan Barcode Luas dalam DOCX
Perpustakaan MiniDocx sumber terbuka mendukung rangkaian luas barcode 1D dan 2D, termasuk Code39, Code128, EAN, UPC, ISBN, Databar, Kode Pos, PDF417, Data Matrix, QR Code, dan Maxi Code. Barcode disisipkan sebagai bidang dalam template dan secara otomatis dirender berdasarkan data yang Anda berikan. Ini menjadikannya ideal untuk sistem manajemen inventaris, aplikasi pengiriman dan logistik, solusi pelabelan produk, sistem pelacakan dokumen, integrasi point-of-sale ritel, dan sebagainya.
Bagaimana Menerapkan Pemformatan dan Styling Lanjutan dalam Dokumen Word via Perpustakaan 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;
}
Tambah & Kelola Grafik dalam File World via C+
Perpustakaan MiniDocx dapat mengisi data diagram secara dinamis, memungkinkan Anda membuat visualisasi berbasis data. Diagram yang didefinisikan dalam template Anda dapat memiliki rangkaian data yang diperbarui secara programatik, memungkinkan pembuatan dashboard eksekutif dan laporan analitis. Perpustakaan ini mencakup dukungan untuk lebih dari 70 jenis diagram yang tersedia di Microsoft Word, termasuk Kolom, Garis, Pie, Bar, Area, Scatter, Stock, Surface, Donut, Bubble, Radar, dan sebagainya. Fitur ini memungkinkan laporan keuangan dinamis dengan visualisasi data real-time, dokumen analisis statistik, dashboard intelijen bisnis, laporan riset ilmiah, dokumentasi pelacakan kinerja, dan lainnya.
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;
}
Pemformatan dan Styling Lanjutan dalam File DOCX
Perpustakaan MiniDocx sumber terbuka mempertahankan format asli Word sambil secara dinamis menyesuaikan gaya di dalam aplikasi C++. Perpustakaan mencakup dukungan untuk berbagai fitur pemformatan seperti gaya font, ukuran, dan warna, penyelarasan dan spasi paragraf, tabel dengan batas khusus, header dan footer, nomor halaman dan pemisah bagian, gaya & tema khusus, dan sebagainya. Dokumen yang dihasilkan mempertahankan semua pemformatan dari template, memastikan konsistensi merek dan penampilan profesional. Contoh kode berikut menunjukkan cara pengembang dapat menerapkan pemformatan kondisional berdasarkan data di dalam aplikasi 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;
}