php将word转为html5,【源码分享】手把手教你用PHP打造一款Word转HTML的程序 - PHP论坛 - 51CTO技术论坛_中国领先的IT技术社区...

本文介绍了如何在PHP环境中利用LibreOffice将上传的Word文档转换为HTML,以便在APP中友好显示。通过命令行工具soffice.exe执行转换,并展示了PHP代码示例。然而,转换后的HTML可能存在自适应问题,需要额外处理以适应APP显示。此外,还讨论了性能优化,建议将转换任务放入消息队列中异步处理。
摘要由CSDN通过智能技术生成

【51CTO.com原创稿件】在一些特殊场景,用户需要展示的数据不是手动输入的纯文本或者手动编辑的富文本内容,而是通过上传Word文件形成生成最后需要在APP上显示的HTML内容,也就是将上传的Word文件转换为最后显示的HTML文件,那么面对这样的需求,我们应该怎么办呢?

业务场景

763eb2623f37b2f949410086477b49b6.png

应朋友的请求,本次需要完成的功能如上图,从上图我们能够看到,首先从管理后台上传WORD文件,然后后端脚本对这个WORD文件进行转换操作,将其转换为HTML文件,然后将这个HTML文件保存在某个目录下面,最后手机APP里面直接显示这个HTML文件就可以了,换句话说,就是将WORD文件转换为HTML文件,并且这个HTML文件兼容HTML5标准,从而能够让APP能够尽可能的、友好的显示这个HTML文件。

目前主要的解决方案

5b36ebd00fac86cb2703adabdd402bbc.png

目前能够完成WORD文件转HTML的第三方库或者软件很多,不过最常用的有两种:Apache OpenOffice和LibreOffice,这两种方案的最大优点就是跨平台型比较强,也就是它们都提供了关于Windows、Linux、Mac OS操作系统的版本,这样我们就能够放心的使用了,尽可能的减少移植代码成本,在此,我选择的是LibreOffice这种解决方案。

环境介绍

进行本次开发的本地环境如下:

OS:Windows 10

PHP:7.1以上

MySQL:5.6以上

WEB SERVER:Apache 2.4

PHP Framework:LV框架

IDE:PhpStorm

服务器环境介绍:

OS:Ubuntu

PHP:最新版

MySQL:最新版

WEB SERVER:Nginx

安装LibreOffice环境

由于本地环境是Windows环境,所以我仅仅需要下载Windows版本的软件包进行安装就可以了,而该版本的软件就是一个exe文件,所以安装很简单,仅仅需要像安装一般的软件一样点击下一步下一步就可以完成整个安装。

用命令行进行转换

其实将Word文件转换为HTML文件,主要用到的是LibreOffice这个安装目录下面的soffice.exe文件,下图是我本地的文件路径。

68b620fcc449183ef348389b1fe81b2b.png

下面我新建一个目录,用于测试转换,新建目录、转换文件和转换命令、转换结果等到参考下面的截图。

54579fe227b65b32632365cfdd9dbc11.png

刚刚开始仅仅就一个20170818.docx文件,下面我们将在这个目录下面生成一个html文件。

6a5024a9d894267ee897d527aaf8b332.png

经过上面的运行,我们能够看到生成了一个20170818.html的HTML文件,主要应用的命令:”soffice.exe --convert-to html --outdir HTML文件保存目录 要转换的文件名”。

用PHP代码进行转换

上面我们已经用命令行的方式验证了,能够成功将Word文件转换为HTML文件,由于我们的环境是PHP脚本,所以需要用PHP调用soffice.exe文件进行转换,那么在PHP中调用这些执行程序的函数有:shell_exec、exec、system、passthru等等,下面是我用LV实现的转换为HTML的代码片段。

5fd0031c545f1d8035130a688764479d.png

还有一个需要解决的问题

虽然上面我已经成功用PHP来实现后台上传的Word文件转换为HTML文件保存起来,但是还有一个致命的问题,就是转换后的HTML文件不能够自适应,这就导致这个页面在APP里面打开的时候,显示效果非常糟糕,甚至会出现横向滚动条,图片的右下角开始显示文本等等,于是为了解决这个问题,我不得不将生成的HTML文件内容读取出来,然后在里面添加各种各样的HTML标签和CSS属性,参考下面的代码。

64b1f00ef801ddf4199f0d35a1ccd4ce.png

同时还有一点需要说明的是,对于Word文件里面的图片,转换为HTML文件的时候是经过base64编码的。

一个潜在的性能问题

由于转换Word到HTML文件的时候,脚本执行时间或许会很长,所以如果有很多Word文件或者同时有很多用户进行Word文件的转换,这个时候就不太建议上传之后就转换,而是将转换交由单独的主机或者单独的进程来进行,而后端上传成功之后仅仅将转换任务添加到消息队列里面就可以了。

一些附加的注意事项

由于转换时间或许长、上传的Word文件或许很大,所以我们需要做好一些PHP配置选项的设置,比如脚本最大执行时间、文件最大上传大小、POST最大上传大小等等。

【51CTO原创稿件,合作站点转载请注明原文作者和出处为51CTO.com】

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值