代码里生成 Word有什么第三方工具吗

悲惨的大爷
  • 2.1k

业务需要生成一张试卷.
格式是 Word.供给用户下载.
目前拿到了题目信息.如下

{
    "question": "<p>问题:<img src='xxx.png'>已知 f(x)=x2+bx+c(b,c∈R)(1) 当 b=c 时若函数 f(x) 的图像与 x 轴有两个交点, 其坐标分别为 x1,x2, 求证 x1<-1 且 x2<-1?</p>",
    "answer": "答案:2",
 }

生成如下格式

clipboard.png

现在的问题是
1.有没有方便快捷的第三方工具可以用于生成 Word.
2.数据插入到 Word 后.数据里的html标签需要被解析.比如里面有 img 图片标签.需要在 Word 里显示出来.

特此寻求大家.谢谢!


目前用到了 phpoffice, 但是里面的 html 标签好像不会被解析,就把 html 当做字符串写进去了

目前自己搭建了个服务.可以转换文件格式
html->pdf(支持 css)
pdf->docx(样式不会改变.完美)
过两天我把服务地址发上来.大家可以测试下

回复
阅读 3.6k
6 个回答

你这个是考试系统?
PHP有个函数strip_tags可以过滤掉HTML和PHP标签,你可以把试卷内容用这个函数处理再保存。
如果要用PHP解析HTML,试试这个:https://github.com/bupt1987/html-parser
然后我发现,多年没碰数学,这些题已经不会做了。
其实你可以用PHPWord试试看。

由于html复杂且有很多word不支持的标签,我选择了与word交互良好的markdown作为输入语言。当然你可以通过html2markdown进行过度转换。
然后通过pandocmarkdown转为word,稳定且高效,而且此类库有非常高的代码贡献,有非常多的模板和主题可以选择,所以结果还是很漂亮的。

apache POI ,这个就是java专门处理office软件的类库
php的就不知道了.

下面方法不适用~还需要寻找

自问自答.找到了方法.
其实很简单.直接把 html 写到 .doc 文件里即可.
函数

function word($data,$fileName=''){
    if(empty($data)) return '';
    $data='<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">'.$data.'</html>';
    if(empty($fileName)) $fileName=date('YmdHis').'.doc';
    $fp=fopen($fileName,'wb');
    fwrite($fp,$data);
    fclose($fp);
}
$str = '<h2>hello daye</h2>';
word($str);

效果

clipboard.png

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
宣传栏