[phpword][laravel-admin]导入文档转html,并使用富文本编辑后导出
背景
承接上次提问 问答:[不懂就问]phpword中 IOFactory::load($paths)初始化doc文件失败
也不知道各位需不需要,算小弟的记录吧
环境
laravel 8.0
laravel-admin 1.8
PHP 7.3
PHPword 0.18.1
安装就不赘述了
开发阶段
导入
-
文件上传转换
- 这边测试了,
doc
文档确实不支持暂时只写了docx
文件上传use Illuminate\Support\Facades\Storage; // laravel文件上传 use App\Models; // 操作模型 use PhpOffice\PhpWord\IOFactory; // PhpWord 初始化文件方法 use PhpOffice\PhpWord; // PhpWord
- 文件上传也不赘述了… 我懒~ 哎嘿~
- 替换zip服务
PhpWord\Settings::setZipClass(PhpWord\Settings::PCLZIP);
- 转HTML
$wordfile = IOFactory::load($fileName); // 本地文件获取 $xmlWriter = IOFactory::createWriter($wordfile, "HTML"); // 转换为html $html = $xmlWriter->getContent(); // html内容获取 // 然后可以查入到数据库里了
- 这边测试了,
导入结果测试
导出
资源引入
use PhpOffice\PhpWord\PhpWord; use PhpOffice\PhpWord\IOFactory; use PhpOffice\PhpWord\Shared\Html; use PhpOffice\PhpWord\Writer\Html as WriteHtml;
导出下载
$phpWord = new PhpWord(); $section = $phpWord->addSection(); $html = new Html(); $doc = new \DOMDocument(); $doc->loadHTML($model->content); // 内获取赋值 $doc->saveXml(); // 格式设置 我这边试了只能保存xml格式,HTML会出格式问题 $html::addHtml($section, $doc->saveXml(), true, false); // 转换 $phpWord->save('word/'.$model->title.'.docx'); // 保存文件 注意权限问题 $url = env('APP_URL').'/word/'.$model->title.'.docx'; // 保存链接 return $this->response()->success('导出成功')->download($url); // 下载跳转
导出结果测试
关于编码问题更新
// 可以在```mb_convert_encoding()```第三个参数中设置编码:'UTF-8',''
$doc->loadHTML(mb_convert_encoding($profile, 'HTML-ENTITIES', 'UTF-8'));
// 或者使用
$doc->loadHTML('<?xml encoding="utf-8" ?>'.$profile);
关于doc
// 可以使用```MsDoc```,尝试还有问题。待官方更新了...
IOFactory::load("word/word.doc","'MsDoc'"); //doc是MsDoc
end…

本作品采用《CC 协议》,转载必须注明作者和本文链接
推荐文章: