کتابخانه رایگان PHP برای ایجاد و مدیریت فایلهای DOCX مبتنی بر قالب
کتابخانه پیشرو PHP متن باز که امکان ایجاد، خواندن، ویرایش و دستکاری اسناد پردازش Microsoft Word (DOCX) از قالبها را فراهم میکند. افزودن جدولها، وارد کردن متن، تصاویر و اعمال قالببندی با API رایگان PHP
MDword چیست؟
در دنیای توسعه Golang، کار با اسناد Microsoft Word (.docx) تاریخیًا یک چالش بوده است. بسیاری از کتابخانههای موجود یا به عملکرد «فقط نوشتن» محدود هستند یا با برچسب قیمت تجاری سنگینی همراهند. Go-Docx (که توسط fumiama نگهداری میشود) این شکاف را پر میکند به عنوان یکی از کارآمدترین کتابخانههای منبع باز که برای خواندن و نوشتن فایلهای ECMA-376 Office Open XML طراحی شده است. این کتابخانه مفید است زیرا یک API سطح بالا ارائه میدهد که ساختارهای پیچیده XML زیرین فایلهای Word را انتزاع میکند.
آنچه Go-Docx را متمایز میکند مجموعه ویژگیهای جامع آن است: قالببندی متن (رنگ، اندازه، تراز)، درج تصویر، دستکاری جدول، اشکال، بومها و گروهها. چه در حال تولید فاکتور باشید، رزومهها را تجزیه کنید یا تولید گزارش را خودکار کنید، این کتابخانه ساختارهای پیچیده Office Open XML (ECMA-376) را بدون هزینه اضافی فراخوانی برنامههای خارجی مدیریت میکند. این یک fork هدایتشده توسط جامعه است که بهطور قابلتوجهی از پیشینان خود توسعه یافته است. بر خلاف گزینههای تجاری مانند UniOffice (که برای دسترسی به تمام ویژگیها نیاز به پرداخت دارد)، Go-Docx بهصورت کامل تحت مجوز AGPL-3.0 رایگان باقی میماند.
شروع کار با MDword
راه توصیهشده برای افزودن Go-Docx به پروژه شما استفاده از GitHub است. لطفاً برای نصب آسان از دستور زیر استفاده کنید.
نصب MDword از طریق Composer
composer require mkdreams/mdword نصب MDword از طریق GitHub
git clone https://github.com/mkdreams/MDword.git
تولید سند Word مبتنی بر قالب با PHP
Go-Docx به شما امکان میدهد اسناد پیچیده را از صفر با استفاده از یک رویکرد ساختاری ایجاد کنید. این کتابخانه راهاندازی محیط سند را مدیریت میکند، شامل قالبها و سبکهای پیشفرض، تا اطمینان حاصل شود فایلهای تولیدی شما کاملاً با Microsoft Word و سایر پردازشکنندههای مدرن سازگار هستند. در اینجا یک مثال ساده نشان میدهد چگونه یک فایل Word Docx را در برنامههای Go تولید کنید.
چگونه یک سند Word (.docx) مبتنی بر قالب را با کتابخانه PHP ایجاد کنیم؟
require_once 'vendor/autoload.php';
use MDword\WordProcessor;
// Load a template
$template = new WordProcessor();
$template->load('template.docx');
// Replace placeholders
$template->setValue('{{NAME}}', 'John Doe');
$template->setValue('{{DATE}}', date('Y-m-d'));
// Save the modified document
$template->save('output.docx');
افزودن متن به Word و قالببندی با PHP
بر خلاف بسیاری از رقبا، کتابخانه منبع باز Go-Docx در خواندن فایلهای موجود برتری دارد. میتواند یک فایل .docx را تجزیه کرده و از طریق آیتمهای بدنهی آن مانند پاراگرافها و جدولها تکرار کند. این ویژگی آن را انتخابی ایدهآل برای استخراج داده یا وظایف حسابرسی اسناد میسازد که نیاز به تجزیه و تحلیل برنامهنویسی محتوا دارید. مثال زیر نشان میدهد چگونه توسعهدهندگان نرمافزار میتوانند اسناد Word را در برنامههای Go خود تجزیه کنند.
چگونه متن را به سند Word وارد کنیم و قالببندی را با کتابخانه PHP اعمال کنیم؟
require 'vendor/autoload.php';
use Mkdreams\MDword\MDword;
use Mkdreams\MDword\Elements\TextRun;
use Mkdreams\MDword\Elements\Paragraph;
$mdword = new MDword();
$section = $mdword->createSection(); // Sections are often containers for content
// Add a simple paragraph
$paragraph1 = new Paragraph();
$paragraph1->addText('This is a simple paragraph.');
$section->addElement($paragraph1);
// Add a paragraph with formatted text
$paragraph2 = new Paragraph();
$textRun1 = new TextRun();
$textRun1->setText('This text is ');
$paragraph2->addElement($textRun1);
$textRun2 = new TextRun();
$textRun2->setText('bold and red.');
$textRun2->setFontStyle(['bold' => true, 'color' => 'FF0000']); // Color as hex
$paragraph2->addElement($textRun2);
$section->addElement($paragraph2);
// Add text with specific font and size
$paragraph3 = new Paragraph();
$textRun3 = new TextRun();
$textRun3->setText('This is Arial, size 16.');
$textRun3->setFontStyle(['name' => 'Arial', 'size' => 16]);
$paragraph3->addElement($textRun3);
$section->addElement($paragraph3);
$mdword->save('FormattedTextDocument.docx');
echo "Formatted document created.";
افزودن و مدیریت جدولها در فایلهای Word با PHP
کنترل دقیق بر تایپوگرافی یکی از نقاط قوت اصلی این کتابخانه منبع باز Go است. میتوانید رنگ متن، اندازه فونت، ترازبندی را تغییر دهید و حتی از طریق Go-Docx لینکهای فراگیر یا توقفهای تب را اضافه کنید. این امکان به توسعهدهندگان اجازه میدهد اسناد حرفهای و برند شدهای تولید کنند که با نیازهای خاص طراحی مطابقت دارند بدون دخالت دستی.
چگونه جدولها را در اسناد Word DOCX با کتابخانه PHP ایجاد و مدیریت کنیم؟
require 'vendor/autoload.php';
use Mkdreams\MDword\MDword;
use Mkdreams\MDword\Elements\Table;
use Mkdreams\MDword\Elements\Row;
use Mkdreams\MDword\Elements\Cell;
use Mkdreams\MDword\Elements\TextRun;
$mdword = new MDword();
$section = $mdword->createSection();
// Create a table
$table = new Table();
// Potentially add table-level styling, e.g., borders
// $table->setStyle(['borderSize' => 6, 'borderColor' => '000000']);
// Add a header row
$headerRow = new Row();
$cellH1 = new Cell();
$cellH1->addTextRun(new TextRun('Header 1', ['bold' => true]));
$headerRow->addCell($cellH1);
$cellH2 = new Cell();
$cellH2->addTextRun(new TextRun('Header 2', ['bold' => true]));
$headerRow->addCell($cellH2);
$table->addRow($headerRow);
// Add a data row
$dataRow1 = new Row();
$cellR1C1 = new Cell();
$cellR1C1->addTextRun(new TextRun('Data A1'));
$dataRow1->addCell($cellR1C1);
$cellR1C2 = new Cell();
$cellR1C2->addTextRun(new TextRun('Data B1'));
$dataRow1->addCell($cellR1C2);
$table->addRow($dataRow1);
$section->addElement($table);
$mdword->save('DocumentWithTable.docx');
echo "Document with table created.";