MDword 是PHP生成word的另一工具。

更新日志

  • 优化大母版生成速度
  • 解决内存泄漏问题

性能情况(统计脚本

测试项用时(S)
1页母版赋值100次0.04
1页母版赋值500次0.16
1页母版赋值1000次0.33
1页母版赋值10000次7.80
1750页母版赋值100次4.61
1750页母版赋值500次4.94
1750页母版赋值1000次5.43
1750页母版赋值10000次17.39

内存使用情况(统计脚本

连续运行第几次累积内存使用情况备注
10.050590515136719 M首次需要加载PHP
20.050949096679688 M
30.050949096679688 M
40.050949096679688 M
50.050949096679688 M
60.050949096679688 M
70.050949096679688 M
80.050949096679688 M

项目介绍

主要用途:动态生成word
优势:生成word只需关注动态数据及逻辑,无需关注式样的调整(式样可以借助office word调整母版即可)

与PHPWord的爱恨情仇

  • 共同点

  1. PHP编写的库(资源包)
  2. 用于生成office word
  • 不同点

  1. PHPWord 专注于一个元素一个元素的写入,而MDword则是专注于在母版的基础上修改,功能更强大,编码效率更高
  2. 修改文字式样,增加封面,修改页眉页脚MDword只需用word编辑软件调整母版,而PHPWord需要繁琐的去调整每个元素
  3. 可以自动生成目录

教程

  • 安装

//方法一
composer require mkdreams/mdword
//方法二,手动引入自动加载类
require_once('Autoloader.php');
  • 给母版“temple.docx”添加批注

image

  • 调用方法(更多更丰富的调用方式,参考案例:tests\samples\simple for readme,例如:目录、序号等)

//新建类 加载 母版
$TemplateProcessor = new WordProcessor();
$template = 'temple.docx';
$TemplateProcessor->load($template);

//赋值
$TemplateProcessor->setValue('value', 'r-value');

//克隆并复制
$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->saveAs($rtemplate);
  • 结果

image

  • 动图

image

性能情况(统计脚本)

测试项用时(S)
1页母版赋值100次0.04
1页母版赋值500次0.16
1页母版赋值1000次0.33
1页母版赋值10000次7.80
1750页母版赋值100次4.61
1750页母版赋值500次4.94
1750页母版赋值1000次5.43
1750页母版赋值10000次17.39

内存使用情况(统计脚本)

连续运行第几次累积内存使用情况备注
10.050590515136719 M首次需要加载PHP类
20.050949096679688 M
30.050949096679688 M
40.050949096679688 M
50.050949096679688 M
60.050949096679688 M
70.050949096679688 M
80.050949096679688 M

更多案例

  • 简单的综合案例
  • 带式样的文字
  • 添加图片
  • 克隆
  • 多种方式设置区块,解决无法添加批注问题
  • PHPWORD写入到区块
声明:本站所有文章,如无特殊说明或标注,均为本站原创发布。任何个人或组织,在未征得本站同意时,禁止复制、盗用、采集、发布本站内容到任何网站、书籍等各类媒体平台。如若本站内容侵犯了原著者的合法权益,可联系我们进行处理。