常見問題

PhpWord 導(dǎo)出生成word文件帶圖片處理,解決富文本導(dǎo)出問題完整案例

常見問題

2588

字體:

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)【速建時代】。