偷偷摘套内射激情视频,久久精品99国产国产精,中文字幕无线乱码人妻,中文在线中文a,性爽19p

手把手教你用PHP打造一款Word轉(zhuǎn)HTML的程序

原創(chuàng)
移動(dòng)開(kāi)發(fā)
在一些特殊場(chǎng)景,用戶(hù)需要展示的數(shù)據(jù)不是手動(dòng)輸入的純文本或者手動(dòng)編輯的富文本內(nèi)容,而是通過(guò)上傳Word文件形成生成最后需要在APP上顯示的HTML內(nèi)容,也就是將上傳的Word文件轉(zhuǎn)換為最后顯示的HTML文件,那么面對(duì)這樣的需求,我們應(yīng)該怎么辦呢?

【51CTO.com原創(chuàng)稿件】在一些特殊場(chǎng)景,用戶(hù)需要展示的數(shù)據(jù)不是手動(dòng)輸入的純文本或者手動(dòng)編輯的富文本內(nèi)容,而是通過(guò)上傳Word文件形成生成***需要在APP上顯示的HTML內(nèi)容,也就是將上傳的Word文件轉(zhuǎn)換為***顯示的HTML文件,那么面對(duì)這樣的需求,我們應(yīng)該怎么辦呢?

業(yè)務(wù)場(chǎng)景

業(yè)務(wù)場(chǎng)景

應(yīng)朋友的請(qǐng)求,本次需要完成的功能如上圖,從上圖我們能夠看到,首先從管理后臺(tái)上傳WORD文件,然后后端腳本對(duì)這個(gè)WORD文件進(jìn)行轉(zhuǎn)換操作,將其轉(zhuǎn)換為HTML文件,然后將這個(gè)HTML文件保存在某個(gè)目錄下面,***手機(jī)APP里面直接顯示這個(gè)HTML文件就可以了,換句話說(shuō),就是將WORD文件轉(zhuǎn)換為HTML文件,并且這個(gè)HTML文件兼容HTML5標(biāo)準(zhǔn),從而能夠讓APP能夠盡可能的、友好的顯示這個(gè)HTML文件。

目前主要的解決方案

[[203561]]

目前能夠完成WORD文件轉(zhuǎn)HTML的第三方庫(kù)或者軟件很多,不過(guò)最常用的有兩種:Apache OpenOffice和LibreOffice,這兩種方案的***優(yōu)點(diǎn)就是跨平臺(tái)型比較強(qiáng),也就是它們都提供了關(guān)于Windows、Linux、Mac OS操作系統(tǒng)的版本,這樣我們就能夠放心的使用了,盡可能的減少移植代碼成本,在此,我選擇的是LibreOffice這種解決方案。

環(huán)境介紹

進(jìn)行本次開(kāi)發(fā)的本地環(huán)境如下:

OS:Windows 10

PHP:7.1以上

MySQL:5.6以上

WEB SERVER:Apache 2.4

PHP Framework:LV框架

IDE:PhpStorm

服務(wù)器環(huán)境介紹:

OS:Ubuntu

PHP:***版

MySQL:***版

WEB SERVER:Nginx

安裝LibreOffice環(huán)境

由于本地環(huán)境是Windows環(huán)境,所以我僅僅需要下載Windows版本的軟件包進(jìn)行安裝就可以了,而該版本的軟件就是一個(gè)exe文件,所以安裝很簡(jiǎn)單,僅僅需要像安裝一般的軟件一樣點(diǎn)擊下一步下一步就可以完成整個(gè)安裝。

用命令行進(jìn)行轉(zhuǎn)換

其實(shí)將Word文件轉(zhuǎn)換為HTML文件,主要用到的是LibreOffice這個(gè)安裝目錄下面的soffice.exe文件,下圖是我本地的文件路徑。

路徑

下面我新建一個(gè)目錄,用于測(cè)試轉(zhuǎn)換,新建目錄、轉(zhuǎn)換文件和轉(zhuǎn)換命令、轉(zhuǎn)換結(jié)果等到參考下面的截圖。

33

剛剛開(kāi)始僅僅就一個(gè)20170818.docx文件,下面我們將在這個(gè)目錄下面生成一個(gè)html文件。

html

經(jīng)過(guò)上面的運(yùn)行,我們能夠看到生成了一個(gè)20170818.html的HTML文件,主要應(yīng)用的命令:”soffice.exe --convert-to html --outdir HTML文件保存目錄 要轉(zhuǎn)換的文件名”。

用PHP代碼進(jìn)行轉(zhuǎn)換

上面我們已經(jīng)用命令行的方式驗(yàn)證了,能夠成功將Word文件轉(zhuǎn)換為HTML文件,由于我們的環(huán)境是PHP腳本,所以需要用PHP調(diào)用soffice.exe文件進(jìn)行轉(zhuǎn)換,那么在PHP中調(diào)用這些執(zhí)行程序的函數(shù)有:shell_exec、exec、system、passthru等等,下面是我用LV實(shí)現(xiàn)的轉(zhuǎn)換為HTML的代碼片段。

html4

還有一個(gè)需要解決的問(wèn)題

雖然上面我已經(jīng)成功用PHP來(lái)實(shí)現(xiàn)后臺(tái)上傳的Word文件轉(zhuǎn)換為HTML文件保存起來(lái),但是還有一個(gè)致命的問(wèn)題,就是轉(zhuǎn)換后的HTML文件不能夠自適應(yīng),這就導(dǎo)致這個(gè)頁(yè)面在APP里面打開(kāi)的時(shí)候,顯示效果非常糟糕,甚至?xí)霈F(xiàn)橫向滾動(dòng)條,圖片的右下角開(kāi)始顯示文本等等,于是為了解決這個(gè)問(wèn)題,我不得不將生成的HTML文件內(nèi)容讀取出來(lái),然后在里面添加各種各樣的HTML標(biāo)簽和CSS屬性,參考下面的代碼。

問(wèn)題

同時(shí)還有一點(diǎn)需要說(shuō)明的是,對(duì)于Word文件里面的圖片,轉(zhuǎn)換為HTML文件的時(shí)候是經(jīng)過(guò)base64編碼的。

一個(gè)潛在的性能問(wèn)題

由于轉(zhuǎn)換Word到HTML文件的時(shí)候,腳本執(zhí)行時(shí)間或許會(huì)很長(zhǎng),所以如果有很多Word文件或者同時(shí)有很多用戶(hù)進(jìn)行Word文件的轉(zhuǎn)換,這個(gè)時(shí)候就不太建議上傳之后就轉(zhuǎn)換,而是將轉(zhuǎn)換交由單獨(dú)的主機(jī)或者單獨(dú)的進(jìn)程來(lái)進(jìn)行,而后端上傳成功之后僅僅將轉(zhuǎn)換任務(wù)添加到消息隊(duì)列里面就可以了。

一些附加的注意事項(xiàng)

由于轉(zhuǎn)換時(shí)間或許長(zhǎng)、上傳的Word文件或許很大,所以我們需要做好一些PHP配置選項(xiàng)的設(shè)置,比如腳本***執(zhí)行時(shí)間、文件***上傳大小、POST***上傳大小等等。

【51CTO原創(chuàng)稿件,合作站點(diǎn)轉(zhuǎn)載請(qǐng)注明原文作者和出處為51CTO.com】

責(zé)任編輯:何星 來(lái)源: 51CTO
相關(guān)推薦

2023-05-22 10:04:24

2021-02-01 08:41:06

Java考試系統(tǒng)

2021-02-04 15:52:46

Java考試系統(tǒng)

2021-01-04 09:55:26

Java移動(dòng)互聯(lián)網(wǎng)

2021-01-05 09:04:20

Javatxt文件

2022-02-17 10:26:17

JavaScript掃雷游戲前端

2021-01-10 08:14:01

Go語(yǔ)言TCP掃描器

2021-11-01 10:26:07

CanvasAPI畫(huà)布技術(shù)HTML5

2021-12-30 08:56:57

Python摸魚(yú)倒計(jì)界面Python基礎(chǔ)

2024-01-07 20:00:27

2021-01-21 06:04:55

Go語(yǔ)言TCP目錄生成器

2021-08-13 09:01:31

Python小游戲Python基礎(chǔ)

2021-08-09 13:31:25

PythonExcel代碼

2022-10-19 14:30:59

2009-08-27 18:10:58

PHP繪制3D圖形

2021-03-02 09:05:13

Python

2021-02-06 14:55:05

大數(shù)據(jù)pandas數(shù)據(jù)分析

2021-02-04 09:00:57

SQLDjango原生

2011-03-28 16:14:38

jQuery

2022-08-04 10:39:23

Jenkins集成CD
點(diǎn)贊
收藏

51CTO技術(shù)棧公眾號(hào)