文章来源(hbsjsd.cn)湖北高端网站定制开发公司-速建时代
PhpWord 导出生成word文件带图片处理,解决富文本导出问题完整案例
引入文件
use ZipArchive; use PhpOffice\PhpWord\IOFactory; use PhpOffice\PhpWord\PhpWord; use PhpOffice\PhpWord\Element\InlineImage; use PhpOffice\PhpWord\SimpleType\Jc;
php 后端处理数据
// 创建一个临时目录用于存储导出的Word文件 $tmpPath = './temp/'; if (!is_dir($tmpPath)) { mkdir($tmpPath); } // 循环处理每篇文章 foreach ($artRes as $article) { // 创建一个PhpWord实例 $phpWord = new PhpWord(); $articleTitle = $article['title']; // 创建一个新的Word文档 $section = $phpWord->addSection(); //标题 $section->addText($articleTitle, array('name' => '黑体', 'size' => 16), array('align'=>'center')); //正文处理 if ($article['markdown']=='markdown'){ $content_html=json_decode($article['content'],true); $articleContent=$content_html['html']; }else{ $articleContent = $article['content']; } //写入文档 \PhpOffice\PhpWord\Shared\Html::addHtml($section, $articleContent); // 保存Word文档为文件 $filename = $tmpPath . $articleTitle . '.docx'; $phpWord->save($filename); } // 创建一个临时压缩文件 $zipPath = './temp/export.zip'; $zip = new ZipArchive(); $zip->open($zipPath, ZipArchive::CREATE | ZipArchive::OVERWRITE); // 将所有导出的Word文件添加到压缩文件中 $wordFiles = glob($tmpPath . '*.docx'); foreach ($wordFiles as $wordFile) { $zip->addFile($wordFile, basename($wordFile)); } // 关闭并保存压缩文件 $zip->close(); // 删除临时目录中的Word文件 foreach ($wordFiles as $wordFile) { unlink($wordFile); } // 删除临时目录 @rmdir($tmpPath); //返回数据 /* * code 状态 * msg 下载地址 * name 下载后重命名 * */ return json(['code'=>1,"msg"=>'http://s.hbsjsd.cn/temp/export.zip','name'=>time().'.zip']);
前端请求
$.post("/Wordexport/export", data.field, function (res) { if (res.code == 1) { var url=res.msg; downloadFile(url,res.name) } })
执行下载
//下载文件 function downloadFile(url, fileName) { console.log(url) // 创建一个隐藏的<a>元素 var link = document.createElement('a'); link.href = url; // 设置下载的文件名 link.download = fileName; // 将<a>元素加入到文档中 document.body.appendChild(link); // 模拟点击<a>元素来触发下载 link.click(); // 移除<a>元素 document.body.removeChild(link); }
[声明]原创不易,请转发者备注下文章来源(hbsjsd.cn)【速建时代】。