Thinkphp8通过PhpWord导出生成word文件,支持图片处理,富文本导出完整方案
发表于:2024-12-24 15:53:10浏览:3229次
本文介绍如何使用Thinkphp8通过PhpWord从富文本编辑器中导出内容,并转换成Microsoft Word文档。通过解析富文本格式,转换为DOC或DOCX格式,实现编辑器中的文本、图片等元素在Word中完美呈现。
该方案实现富文本html内容转为word文档doc、docx格式不会乱码,如果富文本内容有图片的,图片地址需要添加域名才能导出。
use think\facade\Db;
use ZipArchive;
use PhpOffice\PhpWord\IOFactory;
use PhpOffice\PhpWord\Element\InlineImage;
use PhpOffice\PhpWord\SimpleType\Jc;
use PhpOffice\PhpWord\PhpWord;
use PhpOffice\PhpWord\Shared\Html;
class Export extends BaseController
{
public function index()
{
$param = get_params();
$article = Db::name('Note')->where('id',2)->find();
// 创建一个临时目录用于存储导出的Word文件
$tmpPath = CMS_ROOT.'public/temp/';
if (!is_dir($tmpPath)) {
mkdir($tmpPath);
}
$phpWord = new PhpWord();
$articleTitle = $article['title'];
// 创建一个新的Word文档
$sectionStyle = array('orientation' => null,
'marginLeft' => 900,
'marginRight' => 900,
'marginTop' => 900,
'marginBottom' => 900);
$section = $phpWord->createSection($sectionStyle);
//$section = $phpWord->addSection();
//标题
$section->addText($articleTitle, array('name' => '黑体', 'size' => 16), array('align'=>'center'));
//正文处理
$articleContent = $article['content'];
//写入文档
Html::addHtml($section, $articleContent);
// 保存Word文档为文件
$filename = $tmpPath . $articleTitle . '.docx';
$phpWord->save($filename);
// 创建一个临时压缩文件
$zipPath = CMS_ROOT.'public/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 to_assign(['code'=>0,"msg"=>'http://www.gouguoa.com/temp/export.zip','name'=>time().'.zip']);
}
}
另外,备注一下的phpword旧的中文文档地址:
https://phpword-zh.readthedocs.io/zh-cn/latest/intro.html
推荐文章
- javascript一维数组递归排序方法
- 十款好用到爆的 MySQL 可视化管理工具推荐
- 勾股DEV,一款专为IT行业研发团队打造的智能化项目管理与团队协作的工具软件
- EHR系统——电子人力资源管理系统详解
- HTTP中GET、POST、PUT与DELETE的区别和用法
- ThinkPHP6的前置中间件和后置中间件的区别,中间件解决跨域问题的方案
- 开源的OA办公系统 — 勾股OA 4.92.10发布
- ES6 箭头函数讲解 你正确使用了吗?
- 使用HTML Purifier在thinkphp6中过滤富文本&防止XSS攻击
- PHP8.5将于2025年11月20日正式发布,还在用PHP 5.6的老版本用户该何去何从?

