新聞動態

                                                                                  位置:首頁 新聞動態 常見問題

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

                                                                                  新聞動態
                                                                                  2023年07月21日 閱讀:2848次

                                                                                  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);
                                                                                      }

                                                                                  上一篇

                                                                                  下一篇

                                                                                  亚洲中文字幕在线19页_99久久国产精品免费热7788_欧美专区日韩专区综合专区_小泽玛利亚一区_gogo999亚洲肉体艺术