Warning: error_log(/data/www/wwwroot/hmttv.cn/caches/error_log.php): failed to open stream: Permission denied in /data/www/wwwroot/hmttv.cn/phpcms/libs/functions/global.func.php on line 537 Warning: error_log(/data/www/wwwroot/hmttv.cn/caches/error_log.php): failed to open stream: Permission denied in /data/www/wwwroot/hmttv.cn/phpcms/libs/functions/global.func.php on line 537
起因:因為公司遇到發(fā)稿問題,很多人喜歡用word編碼,然后再發(fā)布到網(wǎng)站上。PHP的包中雖然有部分可以使用的類庫,但是對于圖片始終處理不好,我就想到了python。研究了下,python將word轉(zhuǎn)為html還真是方便。但是,怎么結(jié)合到服務(wù)器上呢?我們的服務(wù)器是用PHP開發(fā)的。
1:python腳本
#!/usr/bin/python# -*- coding: UTF-8 -*-import sysfrom pydocx import PyDocXreload(sys)sys.setdefaultencoding('utf8')FileName=sys.argv[1] #獲取文件名參數(shù)ShortName=sys.argv[2] #獲取文件名參數(shù)html=PyDocX.to_html(FileName) # f=open("/www/wwwroot/micuer.com/pythoncode/runtime/99.txt", 'w') #服務(wù)器的全路徑# f.write(html)# f.close()print(html)
2:php處理腳本
public function uploadword(){ try { $file=request()->file("file"); // 上傳到本地服務(wù)器 $savename=\think\facade\Filesystem::disk('upload')->putFile( 'word', $file); $shotrname=time().".txt"; // 短名稱 $savename="/www/wwwroot/micuer.com/data/upload/".$savename; //Request::domain(). $python_file_name="/www/wwwroot/micuer.com/pythoncode/WordToHtml.py"; //組裝命令 $cmd="python {$python_file_name} ".$savename." {$shotrname} 2>error.txt 2>&1"; $res=exec($cmd,$array, $ret); return json(["code"=>200,"msg"=>"成功","data"=>$savename,"cmd"=>$cmd,"array"=>$array]); } catch (think\exception\ValidateException $e) { return json(["code"=>40000,"msg"=>$e->getMessage()]); } }
上傳界面如下:
實現(xiàn)的功能就是利用PHP的exec函數(shù),調(diào)用py腳本,將html代碼返回給前臺服務(wù)器。
返回數(shù)據(jù)如下
其實,再處理這個方案中,也遇到了很多問題,比如在命令行下只能成功,但是exec函數(shù)執(zhí)行不成功等等。
參考了資料:https://my.oschina.net/u/4427610/blog/3155816
也就是
exec("python python_test.py 2>error.txt 2>&1", $array, $ret);
在bash中0,1,2三個數(shù)字分代表STDIN_FILENO、STDOUT_FILENO、STDERR_FILENO,即標(biāo)準(zhǔn)輸入(一般是鍵盤),標(biāo)準(zhǔn)輸出(一般是顯示屏,準(zhǔn)確的說是用戶終端控制臺),標(biāo)準(zhǔn)錯誤(出錯信息輸出)。
也可以通過以下方式將標(biāo)準(zhǔn)錯誤重定向到標(biāo)準(zhǔn)輸出保存到$array中:
打印之后,發(fā)現(xiàn)是沒有權(quán)限調(diào)用。于是就直接改為輸出了,也就是 py的print(html)函數(shù)。
注意幾點:
1:執(zhí)行權(quán)限問題
2:exec(“python python_test.py 2>error.txt 2>&1”, $array, $ret); 中 $array就接受到了 print(html)的值
3:各個腳本盡量使用全路徑
AVA中將WORD轉(zhuǎn)換為HTML導(dǎo)入到CKEDITOR編輯器中(解決圖片問題,樣式,非常完美),ckeditor粘貼word,ckeditor3粘貼word,ckeditor4粘貼word,ckeditor5粘貼word內(nèi)容,ckeditor復(fù)制word圖片,ckeditor復(fù)制粘貼word圖片,ckeditor復(fù)制word內(nèi)容,ckeditor粘貼word圖片,復(fù)制word圖片粘貼到ckeditor,
前端用了VUE2,VUE3,React,HTML5,也是一個新項目,為了方便用的這些框架,實際上這個是無所謂,功能的實現(xiàn)和前端這些框架沒什么關(guān)系。
后端用了PHP,JSP,ASP,ASP.NET,SpringBoot,功能實現(xiàn)和后端用的什么開發(fā)語言無關(guān),后端只提供一個文件上傳的接口,HTTP form協(xié)議,圖片上傳時會調(diào)這個接口。
編輯器是ckeditor5,為ckeditor編輯器增加粘貼Word圖片的功能,支持快捷鍵操作(Ctrl+V),支持多種系統(tǒng):Windows,macOS,Linux,信創(chuàng)國產(chǎn)化環(huán)境,中標(biāo)麒麟,銀河麒麟,統(tǒng)信,龍芯。
支持word粘貼,word內(nèi)容粘貼,word圖文粘貼,word圖片粘貼,粘貼后圖片能夠自動上傳到服務(wù)器中,然后將圖片和內(nèi)容HTML添加到編輯器中,上傳接口地址能夠自定義
用戶使用操作起來更方便一些,一般發(fā)新聞,或者發(fā)文章用的比較多,基本上每天發(fā)新聞,發(fā)文章都會用到,
這個功能確實為用戶帶來了方便。
主要步驟如下:
1.上傳WordPaster文件夾
一般將WordPaster.cab放在WordPaster目錄下。
2.上傳CKEditor插件目錄
3.引入JS,初始化控件
注意:不要重復(fù)引入jquery,如果您的項目已經(jīng)引入了jq,則不用再引入jq-1.4
如果希望添加到默認(rèn)工具欄中,請修改ckeditor.js,在toolbar_Full中增加imagepaster,netpaster
為ckeditor增加插件(imagepaster,netpaster,pptpaster,pdfimport):
注意:
1.如果接口字段名稱不是file,請配置FileFieldName。ueditor接口中使用的upfile字段
參考:http://www.ncmem.com/doc/view.aspx?id=c3ad06c2ae31454cb418ceb2b8da7c45
2.如果接口返回JSON,請配置ImageMatch
參考:http://www.ncmem.com/doc/view.aspx?id=07e3f323d22d4571ad213441ab8530d1
3.如果接口返回的圖片地址沒有域名,請配置ImageUrl
參考:http://www.ncmem.com/doc/view.aspx?id=704cd302ebd346b486adf39cf4553936
4.如果接口有權(quán)限驗證(登陸驗證,SESSION驗證),請配置COOKIE。或取消權(quán)限驗證。
參考:http://www.ncmem.com/doc/view.aspx?id=8602DDBF62374D189725BF17367125F3
常見問題:
1.為什么整合到項目中圖片無法上傳?
請先測試接口:http://www.ncmem.com/doc/view.aspx?id=61f361025c9247098f6a15c3dfc53db5
果你有MicrosoftWord文檔,并且希望將其放到Web上,則需要將該文檔轉(zhuǎn)換為HTML,以便在網(wǎng)頁上顯示該文檔。有幾種不同的方法可以做到這一點。你選擇的方式將取決于你最終想要的效果。如果你想要一些高級訓(xùn)練,你可以參加學(xué)習(xí)HTML 5培訓(xùn)課程這將教會你更多的知識。
將Word轉(zhuǎn)換為HTML的簡單方法
將 Word 文檔轉(zhuǎn)換為 HTML 的最簡單方法是使用 Microsoft Word 來完成。 在 Microsoft Word 中打開你的文檔,然后轉(zhuǎn)到頁面頂部并選擇“文件”,然后選擇“另存為”。 當(dāng)另存為窗口打開時,在文件名插槽中輸入你想要的文件名稱。 接下來,單擊另存為類型,將顯示一個下拉菜單。 選擇網(wǎng)頁并點擊保存。
使用在線轉(zhuǎn)換器
如果有很多文本格式并且使用 Microsoft Word 并沒有按照你想要的方式保存它,你可能需要使用免費的在線 Word 到 HTML 轉(zhuǎn)換器。 這些在線轉(zhuǎn)換器會將你的 Word 文檔轉(zhuǎn)換為 HTML 代碼。 然后你可以將代碼粘貼到空白網(wǎng)頁上并上傳。
使用 HTML 軟件轉(zhuǎn)換 Word 文檔
使用許多 HTML 編寫軟件,你可以選擇在 HTML 編寫軟件中轉(zhuǎn)換你的 Microsoft Word 文檔。 Dreamweaver 是最流行的 HTML 編寫軟件,它有一項功能可以幫你完成這項工作。想要學(xué)習(xí)HTML5相關(guān)技術(shù),HTML5培訓(xùn)學(xué)習(xí)是一個很快的捷徑,專業(yè)導(dǎo)師線下面授教學(xué),4-5個月的學(xué)習(xí)周期,課程系統(tǒng)又全面,緊跟企業(yè)需求,輕松就業(yè)。
要使用 Dreamweaver 將 Word 文檔轉(zhuǎn)換為 HTML,請打開一個新網(wǎng)頁。 轉(zhuǎn)到文件>導(dǎo)入>Word文檔,將出現(xiàn)一個帶有一些選項的彈出框。 選擇哪些選項并選擇確定。 然后你的文檔將出現(xiàn)在網(wǎng)頁上。
如何使用記事本轉(zhuǎn)換文檔
如果你知道一點 HTML,你可以自己轉(zhuǎn)換你的 Microsoft Word 文檔。 首先復(fù)制你的 Word Doc,然后打開記事本并將其粘貼到記事本上。 這將從你的 Word 文檔中刪除所有格式。 現(xiàn)在你只有文本,你可以構(gòu)建你的 HTML。
使用 Google Docs 轉(zhuǎn)換為 HTML
現(xiàn)在稱為 Google Drive 的 GoogleDocs 也將為你執(zhí)行此操作。 這是許多記者將他們的 word 文檔轉(zhuǎn)換為 HTML 以在網(wǎng)絡(luò)上發(fā)布的方式。
首先,單擊紅色的“創(chuàng)建”按鈕并選擇“文檔”。 復(fù)制你的 Microsoft Word 文檔,然后將其粘貼到你的新 GoogleDocs 頁面上。 接下來,單擊文件,然后選擇“下載為”。 會彈出一些選項,你選擇“網(wǎng)頁”。 它會立即將你的文件下載為 zip 文件。
有很多方法可以將你的 Microsoft Word 文檔轉(zhuǎn)換為適用于 Web 的 HTML。 你可以使用免費的在線工具來完成,脫離文檔并自己制作 HTML,如果你想了解更多HTML 5相關(guān)知識,可以報名參加HTML 5培訓(xùn)課程并學(xué)習(xí)如何將HTML 5編程技能提升到更高的水平,增強(qiáng)自身競爭力,讓自己在職場中更有優(yōu)勢。
了解更多
*請認(rèn)真填寫需求信息,我們會在24小時內(nèi)與您取得聯(lián)系。