php 如何将一个富文本字符串生成word文档?

发布于 2022-09-11 15:07:26 字数 1842 浏览 20 评论 0

问题描述

我现在有一个富文本字符串,
比如$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 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

只等公子 2022-09-18 15:07:26

建议你还是找个插件去搞吧。doc和docx格式都是以zip打包封装起来的,不信你用word新建个文件,再拖到随便个解压缩软件里,就能看到结构了。你用office打不开因为你生成的东西格式压根不合法,用wps能开是因为金山在兼容性这块做的很强,各种结构通吃,但是不代表你的文件就是OK的。

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文