PhpWord 導(dǎo)出生成word文件帶圖片處理,解決富文本導(dǎo)出問題完整案例
PhpWord 導(dǎo)出生成word文件帶圖片處理,解決富文本導(dǎo)出問題完整案例
引入文件
use ZipArchive; use PhpOffice\PhpWord\IOFactory; use PhpOffice\PhpWord\PhpWord; use PhpOffice\PhpWord\Element\InlineImage; use PhpOffice\PhpWord\SimpleType\Jc;
php 后端處理數(shù)據(jù)
// 創(chuàng)建一個臨時目錄用于存儲導(dǎo)出的Word文件 $tmpPath = './temp/'; if (!is_dir($tmpPath)) { mkdir($tmpPath); } // 循環(huán)處理每篇文章 foreach ($artRes as $article) { // 創(chuàng)建一個PhpWord實(shí)例 $phpWord = new PhpWord(); $articleTitle = $article['title']; // 創(chuàng)建一個新的Word文檔 $section = $phpWord->addSection(); //標(biāo)題 $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); } // 創(chuàng)建一個臨時壓縮文件 $zipPath = './temp/export.zip'; $zip = new ZipArchive(); $zip->open($zipPath, ZipArchive::CREATE | ZipArchive::OVERWRITE); // 將所有導(dǎo)出的Word文件添加到壓縮文件中 $wordFiles = glob($tmpPath . '*.docx'); foreach ($wordFiles as $wordFile) { $zip->addFile($wordFile, basename($wordFile)); } // 關(guān)閉并保存壓縮文件 $zip->close(); // 刪除臨時目錄中的Word文件 foreach ($wordFiles as $wordFile) { unlink($wordFile); } // 刪除臨時目錄 @rmdir($tmpPath); //返回數(shù)據(jù) /* * code 狀態(tài) * 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) } })
執(zhí)行下載
//下載文件 function downloadFile(url, fileName) { console.log(url) // 創(chuàng)建一個隱藏的<a>元素 var link = document.createElement('a'); link.href = url; // 設(shè)置下載的文件名 link.download = fileName; // 將<a>元素加入到文檔中 document.body.appendChild(link); // 模擬點(diǎn)擊<a>元素來觸發(fā)下載 link.click(); // 移除<a>元素 document.body.removeChild(link); }
[聲明]原創(chuàng)不易,請轉(zhuǎn)發(fā)者備注下文章來源(hbsjsd.cn)【速建時代】。