近期有个接到个项目,要将word文档批量导入新闻,便开始研究怎么将word转成html,查阅资料,发现有几种实现方式
方法一,phpword
通过composer require phpoffice/phpword 将phpword插件安装下来
使用方法:
-
require 'vendor/autoload.php';
-
$phpWord = \PhpOffice\PhpWord\IOFactory::load('test.docx');
-
$xmlWriter = \PhpOffice\PhpWord\IOFactory::createWriter($phpWord, "HTML");
-
$xmlWriter ->save('test.htm');
当我使用这个phpword插件的时候出现了好几个弊端:
问题1:该插件只支持以.docx结尾的word文档,不支持.doc文档
问题2:使用该插件有些html元素标签不能识别,如a标签,<ol></ol>,<li></li>等一些元素标签不能使用
因此便淘汰了该方法
方法二,com组件
这边我就不描述该方法了,因为我没有使用这个方法,因为只支持在windows下使用的,我用是要在linux上使用,该方法便淘汰了
方法三,libreoffice插件
后面通过查阅很多资料发现使用php将word转html的并不多,没有办法只能通过查阅资料,寻找通过linux下将word文档转html,便找到了该方法
libreoffice有window版本的,也有linux版本的,我这里就介绍linux下如何使用该插件
先执行命令行进行安装插件:
yum install libreoffice libreoffice-headless
当你装好插件后就可以直接通过命令行将word文档转html文件了。
soffice --headless --convert-to html:HTML test.docx
不过通过将word转成html后,发现word文档里面的字母变小了
通过查看生成的html源码,发现是Linux默认系统语言下是zh-CN,导致出现的不兼容,将系统语言改成en_US就没有问题了
也可以在生产html文件的命令行上加上LANG=en_US.UTF-8就行了
LANG=en_US.UTF-8 soffice --headless --convert-to html:HTML test.docx
以上就是使用libreoffice插件将word文档转成html文件的,不过有些兼容问题,但是这个插件支持doc和docx结尾的word文件,非常好用。
分享就到这了,如果有问题可以在底下留言,看到了会回复的。