常见问题

PhpWord 导出生成word文件带图片处理,解决富文本导出问题完整案例

常见问题

2295

字体:

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