把office文檔轉換為html過程中的一些坑


之前和我們項目的團隊一起醞釀了一個項目,公司的業務文檔技術文檔比較多,但都比較分散,雖然通過FTP或其他方式聚合起來了,但感覺還是不夠方便。

另外公司每次都來新員工,新員工都需要一些培訓,比較耗時,比較好的方法是把以前的配置錄制視頻然后線下先給新員工自己看,但時間久了,資料或視頻總是找不到或不是最新等等。

於是我們團隊想了一個項目,把已有的資料和視頻從線下放到線上,就是能通過一個網站在線看office資料和視頻。並且還能對資料評價和點贊等,根據點贊或想學等數據再決定是否對新員工或老員工來一次組織交流。

最開始的項目是參考百度文庫,把Office資料轉換為flash,視頻資料直接存放,然后通過網站在線觀看,用了flashpager這個軟件,大體代碼如下:

			String converter = pt.getFlashPaperUrl() + "/FlashPrinter.exe -o " + savePath + swfName + ".swf  " + documentName;
			Process p = pro.exec(converter);

  通過調用Process執行FlashPrinter.exe,然后傳遞指令和要轉換的文件即可轉換。

但公司去windows化和去microsoftoffice。這個exe只能運行在windows下,於是重新換了一個方法,在linux下自動把office文檔轉換為Html。

由於不能用微軟的office,於是選用了openoffice,我本地下載的openoffice4.0.1,安裝后先啟動監聽:

soffice -headless -accept="socket,host=127.0.0.1,port=8100;urp;" -nofirststartwizard &

JAVA代碼就可以連接8100端口讓openoffice幫我們把office文檔轉換為Html。

我采用jodconverter-2.2.1.jar包,代碼大體如下:

                OpenOfficeConnection con = new SocketOpenOfficeConnection("127.0.0.1", 8100);
                con.connect();
		// 創建轉換器   
		DocumentConverter converter = new OpenOfficeDocumentConverter(con);
		// 轉換文檔問html   
		converter.convert(docFile, htmlFile);
		// 關閉openoffice連接   
		con.disconnect(); 

  這樣就把office文檔轉換為html文件:htmlFile了。

但ppt默認是轉換為一個html文件,每一頁ppt會生成一個圖片,並且html文件是上一頁下一頁的形式每次只能看到一頁ppt。我們希望把這個html直接展現所有ppt頁的圖片。於是稍微改造了下,把ppt轉換為html后的文件夾下所有圖片做輪訓,然后拼接一個html文件:

<br><center><img src=" + tempDate + "/" + imgName+ " alt=\"\"></center>

 開發完成后,發現非常完美。

但后面還是遇到了兩個坑,分析了很久才發現。

1、部分ppt轉換Html始終是亂碼。

2、部分word文檔轉換為html始終是空白。

上面兩個問題折騰了比較久,有問題的office始終有問題,沒有問題的office一定能轉換成功,分析了很久才發現問題。

最后經過一頁一頁ppt,一個一個文字刪除和轉換才發現。

第一個問題ppt里如果有備注通過openoffice轉換為html就會是亂碼,並且內容很少。

第二個問題是word文檔里部分文字復制到openoffice的文檔里,可能有文字字體不兼容導致。就是比如wps打開這個word,看到都是宋體,但把文字復制到openoffice里,發現有幾個字不是宋體了。

解決方法暫時是:

第一個問題把所有ppt的備注人工刪除了,就能轉換成功了。

第二個問題簡單解決方法是把所有文字的字體都再重新修改成一樣的字體,比如修改成宋體。

希望能給其他有類試想法或遇到相同問題的帶來幫助,轉載請注明來自:http://lawson.cnblogs.com

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM