Windows下WordPress使用OpenOffice以及SWFTools實現網站在線預覽功能

一、          基本介紹

在線預覽的總體思路:實驗室承接了一個網站開發項目,甲方提出需要一個文檔在線預覽需求。經過討論,由於swf類型的文檔是直接能在瀏覽器中查看的,初步設想是利用openoffice將word類型轉變爲pdf文件,然後利用swftools工具將pdf轉爲swf類型。

WordPress:一個以php開發的博客類型網站構架,功能比較全面。

OpenOffice:一套跨平臺的辦公室軟件套件,在實現在線預覽功能中,我們主要使用其中的一個com組件來進行轉換。

SWFTools:一個多類型轉換工具,我們利用這個將pdf轉變爲swf。

 

二、          安裝及應用代碼

OpenOffice和SWFTools的安裝比較簡單,按照軟件提示步驟走就行。

安裝完畢後,在wp-admin/includes/file.php(具體哪個文件根據你自己的項目開發來定)裏添加如下兩個函數:

function word2pdf($doc_url,$output_url){ 

$osm = newCOM("com.sun.star.ServiceManager")

                  ordie ("Please be sure that OpenOffice.org is installed.\n"); 

                  $args= array(MakePropertyValue("Hidden",true,$osm)); 

                  $oDesktop= $osm->createInstance("com.sun.star.frame.Desktop"); 

                  $oWriterDoc= $oDesktop->loadComponentFromURL($doc_url,"_blank", 0,$args); 

                  $export_args=array(MakePropertyValue("FilterName","writer_pdf_Export",$osm)); 

                  $oWriterDoc->storeToURL($output_url,$export_args); 

                  $oWriterDoc->close(true); 

function pdf2swf($pdf_url, $swf_url){

                  $re='';

                  $command= '"E:\swftools\pdf2swf.exe" -t "'.$pdf_url.'" -sflashversion=9 -o "'.$swf_url.'"';

         exec($command,$re,$re);}

然後在你項目的對應位置調用這兩個函數進行轉換即可,一般也是在file.php文件中的wp_handle_upload函數內進行調用,放在上傳成功後進行處理。在這裏需要注意填寫正確的路徑。

 

三、          問題解決

(1)權限分配問題

問題往往不會這麼簡單就能解決,一般在安裝openoffice中會遇到一個權限分配的問題。剛開始,我們在安裝了openoffice後發現調用其組件com.sun.star.ServiceManager往往會失敗,問了很久度娘,才發現問題的解決方案:

打開系統“組件服務”-》計算機-》我的電腦-》DCOM配置-》OpenOfficeService Manager (Ver 1.0),鼠標右鍵打開,更改安全設置,在“安全”裏將所有權限都更改爲“自定義”,這裏包括“啓動和激活權限”、“訪問權限”、“配置權限”都更改爲“自定義”,這裏雖然看起來“配置權限”似乎不需要改。然後點擊“編輯”-》“添加”-》“高級”-》“立即查找”,找到Everyone成員,添加後,賦予其全部權限。這樣將“啓動和激活權限”、“訪問權限”、“配置權限”都添加了Everyone用戶後,再點擊“標識”,選擇交互式用戶,重啓下電腦即可解決問題。

 

(2)在Windows Server 2008或Windows7下將openoffice註冊到服務裏

如果沒有把openoffice註冊爲自動啓動的服務的話,每一次重啓系統可能都需要手動輸入命令soffice -headless-accept="socket,host=127.0.0.1,port=8100;urp;" -nofirststartwizard 來添加到服務裏。網上以前的資料都是利用windows server 2003 resource kit來進行,但是對於WindowsServer 2008或Windows7這個小工具並不兼容。最終解決辦法仍然是利用了windows server 2003 resource kit,不過只是利用了其中的一個叫srvany.exe的小程序。解決方法:

1.  下載windowsserver 2003 resource kit,由於版本兼容問題,此版本不能使用,需要的是其中一個文件。點擊安裝,將srvany.exe複製到服務器的某個位置。

2.  控制檯cmd輸入:sc create"openofficeserver" binPath= "\"C:\Program Files\OpenOffice.org 4\program\soffice.exe\" -headless-accept=\"socket,host=127.0.0.1,port=8100;urp;\"-nofirststartwizard" DisplayName= "OpenOffice 3.4.1 Server"start= auto        

3.  打開註冊表regedit,找到

HKEY_LOCAL_MACHINE\SYSTEM\ControlSet001\services\openofficeserver

1.      複製ImagePath的值到txt文檔,然後將ImagePath修改爲srvany.exe所在的位置的值,如"c:\somepathto\srvany.exe"。

2.      新建一個項(key),命名爲Parameters。這個類似於一個文件夾。在Parameters裏新建一個字符串值Application,值爲剛剛拷貝到txt文檔裏的原來的ImagePath值。

3.      在服務裏找OpenOffice 3.4.1 Server服務,啓動,如果能成功啓動表示設置成功。

最後成果圖:


發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章