php 如何将一个富文本字符串生成word文档?
问题描述
我现在有一个富文本字符串,
比如$str="<p><span style="color: rgb(255, 0, 0);"></span></p><hr/><p><span style="color: rgb(255, 0, 0);">qq<span style="color: rgb(0, 176, 240);">q啊啊啊啊啊百度网址</span></span></p><hr/><p><img src="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAD....(很长的图片的base64的编码)><span style="color: rgb(255, 0, 0);"><span style="color: rgb(0, 176, 240);"></span></span><br/></p>";
中间我省去了大量的图片base64的编码。
问题出现的环境背景及自己尝试过哪些方法
相关代码
// 请把代码文本粘贴到下方(请勿用图片代替代码)
我在网上搜到相关方法,比如这个:
先创建一类类:
class Exportword
{
function start()
{
ob_start();
echo '<html xmlns:o="urn:schemas-microsoft-com:office:office"
xmlns:w="urn:schemas-microsoft-com:office:word"
xmlns="http://www.w3.org/TR/REC-html40">';
}
function save($path)
{
echo "</html>";
$data = ob_get_contents();
ob_end_clean();
$this->wirtefile($path, $data);
}
function wirtefile($fn, $data)
{
$fp = fopen($fn, "wb");
fwrite($fp, $data);
fclose($fp);
}
}
然后实现的代码如下:
$exportWord = new Exportword();
$exportWord->start();
$fileName = '我的学习笔记' . date('Y-m-d H:i:s') . '.docx';
$wordPath = $save_path . $fileName;
echo $str;
$exportWord->save($wordPath);
ob_flush();//每次执行前刷新缓存
flush();
你期待的结果是什么?实际看到的错误信息又是什么?
这样执行之后,文件是生成了,但是有两个问题。
问题1.生成的文件图片没有能展示出来(未能正常显示),其他的富文本信息都能正常写到word文档里面。
问题2.生成的文件使用office打开,会有报错,无法打开,但是使用wps能够打开。为什么?
求大神能帮我解决上面两个问题,或者不使用我上面的方法,是否还有其他方法能够实现将富文本转成word,并使用office能正常打开,内容都能正常显示。
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(1)
建议你还是找个插件去搞吧。doc和docx格式都是以zip打包封装起来的,不信你用word新建个文件,再拖到随便个解压缩软件里,就能看到结构了。你用office打不开因为你生成的东西格式压根不合法,用wps能开是因为金山在兼容性这块做的很强,各种结构通吃,但是不代表你的文件就是OK的。