新增功能特性与已修复问题
- 图片宽度现已支持使用百分比进行设置
- 针对部分小语种文字,系统已能自动匹配兼容字体
项目概述
MDword 的核心用途十分清晰:高效动态生成 Word 文档。其关键优势在于,开发者仅需聚焦业务逻辑与动态数据,而文档样式则完全交由 Word 母版统一配置,无需手动调整。
MDword 与 PHPWord 的对比分析
相同之处
- 两者均为基于 PHP 开发的开源扩展包,可通过 Composer 安装
- 均支持生成标准的 Office Word .docx 格式文档
差异点
- PHPWord 采用逐元素写入方式,而 MDword 基于母版文档进行内容替换与结构扩展,功能更为全面,开发效率显著更高
- 像文字格式调整、封面插入、页眉页脚修改等操作,MDword 只需在 Word 中编辑一次母版即可复用;PHPWord 则需为每个元素单独编码设置,流程相当繁琐
- MDword 内置自动生成文档目录(TOC)功能,开箱即用
使用指南
安装方式
// 方式一:通过 Composer 安装composer require mkdreams/mdword// 方式二:手动引入自动加载类require_once('Autoloader.php');
在母版文件 “temple.docx” 中添加批注示例

基础调用示例(更多高级用法请参考测试案例,如目录生成、序号自动编号等)
// 实例化处理器并加载母版
$TemplateProcessor = new WordProcessor();
$template = 'temple.docx';
$TemplateProcessor->load($template);
// 设置普通变量值
$TemplateProcessor->setValue('value', 'r-value');
// 克隆指定区块(如“people”)3 次
$TemplateProcessor->clones('people', 3);
// 分别为克隆后的子项赋值
$TemplateProcessor->setValue('name#0', 'colin0');
$TemplateProcessor->setValue('name#1', [
['text'=>'colin1','style'=>'style','type'=>MDWORD_TEXT],
['text'=>1,'type'=>MDWORD_BREAK],
['text'=>'86','style'=>'style','type'=>MDWORD_TEXT]
]);
$TemplateProcessor->setValue('name#2', 'colin2');
$TemplateProcessor->setValue('sex#1', 'woman');
$TemplateProcessor->setValue('age#0', '280');
$TemplateProcessor->setValue('age#1', '281');
$TemplateProcessor->setValue('age#2', '282');
// 插入图片
$TemplateProcessor->setImageValue('image', dirname(__FILE__).'/logo.jpg');
// 删除含特定样式的段落
$TemplateProcessor->deleteP('style');
// 保存结果文档
$rtemplate = __DIR__.'/r-temple.docx';
$TemplateProcessor->sa veAs($rtemplate);
输出效果预览

动态操作演示(GIF)

性能测试数据(基准脚本统计)
| 测试场景 | 耗时 (秒) |
|---|---|
| 单页母版执行 100 次变量赋值 | 0.04 |
| 单页母版执行 500 次变量赋值 | 0.16 |
| 单页母版执行 1000 次变量赋值 | 0.33 |
| 单页母版执行 10000 次变量赋值 | 7.80 |
| 1750 页母版执行 100 次变量赋值 | 4.61 |
| 1750 页母版执行 500 次变量赋值 | 4.94 |
| 1750 页母版执行 1000 次变量赋值 | 5.43 |
| 1750 页母版执行 10000 次变量赋值 | 17.39 |
内存占用测试(连续运行统计)
| 连续运行次数 | 累计内存占用 | 说明 |
|---|---|---|
| 1 | 0.050590515136719 M | 首次运行需加载全部类文件 |
| 2 | 0.050949096679688 M | |
| 3 | 0.050949096679688 M | |
| 4 | 0.050949096679688 M | |
| 5 | 0.050949096679688 M | |
| 6 | 0.050949096679688 M | |
| 7 | 0.050949096679688 M | |
| 8 | 0.050949096679688 M |
更多实用案例
- 基础综合应用实战示例
- 带富文本样式的段落处理技巧
- 图片嵌入与尺寸控制方法
- 区块批量克隆及差异化填充
- 多种区块标记方式(有效规避批注无法识别问题)
- 兼容 PHPWord 的区块内容写入方案
- 目录(TOC)嵌入表格单元格
- 表格合并单元格操作
