關於使用PHP轉換office文件爲PDF的解決方案!
最近遇到了相關的問題,需要讓office相關文件在線瀏覽,類似於百度文庫,之前接觸過,知道可以使用pdf.js在線瀏覽PDF文件,那麼現在就需要將Word文件轉爲PDF文件,PPT文件轉爲PDF文件,Excel文件轉爲PDF文件,然後讓用戶在線瀏覽,這樣效果就達到了。本次着重講解文件轉換openoffice的使用。
目錄如下:
必須配置Java運行環境
下載安裝
主要安裝OpenOffice 及 jodconverter (點此下載 原諒我打個友鏈)
OpenOffice的官網地址: https://www.openoffice.org
OpenOffice的文檔地址: https://wiki.openoffice.org/wiki/Main_Page
OpenOffice的下載地址: https://www.openoffice.org/download/index.html
這裏面可以按照自己的操作系統進行選擇並下載:
下載之後直接以默認的方式安裝即可,也可以自定義的哈。
設置權限
按照下方的步驟打開OpenOffice的服務管理配置:
cmd 運行Dcomcnfg.exe->組件服務->計算機->我的電腦->DCOM配置->OpenOffice Service Manager..
打開之後如下圖:
設置“安全”選項卡
選中OpenOffice的服務後,鼠標右鍵,選擇“屬性”,打開如下界面:
按照上圖紅框標識的進行設置,將“安全”選項 所有的內容都設置爲 “自定義” > 然後添加 “Everyone” 用戶,允許所有權限即可
設置 “標識”選項卡
選擇 “交互式用戶” > 確認並應用
啓動OpenOffice服務命令
打開cmd(建議用管理員權限運行,保證服務正常開啓)。
先進入OpenOffice安裝目錄,例如我安裝的: cd C:\Program Files (x86)\OpenOffice 4\program
啓動服務:soffice -headless -accept="socket,host=127.0.0.1,port=8100;urp;" -nofirststartwizard
運行之後,打開 “任務管理器”,可以看到應用已經正常運行了
使用jodconverter 轉換文件
核心轉換java命令行是
java -jar jodconverter-2.2.2/lib/jodconverter-cli-2.2.2.jar 源文件路徑 目標文件路徑
可以直接使用以上命令,在dos命令行模式下進行轉換。如此便可使用PHP代碼執行此命令了,PHP的代碼如下:
<?php
/**
* Created by PhpStorm.
* User: yezhimeih7
* Date: 2017/4/6
* Time: 16:13
* copy: http://www.tcioc.com
*/
set_time_limit(0);
function openOffice($input_file,$type="pdf"){
//轉換路徑的字符編碼
$input_file=iconv("utf-8", "gb2312", $input_file);
//獲取輸出的標題
$out_file=substr($input_file, 0,strrpos($input_file, "."));
//非指定轉換爲PDF格式的文件,默認後綴爲html
if($type!=="pdf"){
$out_file=$out_file.'.html';
}else{
// 對輸出標題 去除空格
$out_file=$out_file.'.pdf';
$out_file=trim($out_file);
$out_file=str_replace(" ","",$out_file);
}
// dos 命令中,對於有空格的文件夾或者文件名,需要用 雙引號(") 括起來,這樣就可以正常運行dos命令了
$file='java -jar jodconverter-2.2.2/lib/jodconverter-cli-2.2.2.jar ./'.'"'.$input_file.'" ./'.'"'.$out_file.'" ';
// PHP執行命令,這裏在linux系統時,會有些不同
$status=exec($file);
return $status;
}
// 調用函數,處理轉換
openOffice("./data/upload/ueditor/分析設計.pptx");
這裏的PHP代碼可以 用網站的形式訪問,也可以用 cli 的模式運行。
運行成功之後,如下圖所示:
注意:文件名中 帶有 空格,依舊可以轉換的喲~
Linux下OpenOffice的使用(轉)
你需要幾下載幾個包,然後安裝配置一下:
OOo_3.3.0_Linux_x86_install-rpm-wJRE_en-US.tar.gz
OOo-SDK_3.3.0_Linux_x86_install-rpm_en-US.tar.gz
jodconverter.2.2.2
1. 安裝openoffice3
tar zxvf OOo_3.3.0_Linux_x86_install-rpm-wJRE_en-US.tar.gz
cd OOO330_m20_native_packed-1_en-US.9567/RPMS
rpm -ivh *.rpm --nodeps --force
安裝後的默認目錄是在:/opt/目錄下面
啓動服務:
/opt/openoffice.org3/program/soffice -headless -accept="socket,host=127.0.0.1,port=8100;urp;" -nofirststartwizard &
開機啓動:
vi /etc/rc.local
在最後面加入啓動語句
2. 安裝OpenOffice SDK3.3
tar zxvf OOo-SDK_3.3.0_Linux_x86_install-rpm_en-US.tar.gz
cd OOO330_m20_native_packed-1_en-US.9567/RPMS/
rpm -vih *.rpm
3. 安裝jodconverter.2.2.2 ,安裝了這個之後就已經可以實現DOC轉PDF了。
這個安裝很簡單,直接上網站下一個這個東東回來。
解壓,複製到一個目錄裏面去,就能直接用了,調用它裏面的/lib/jodconverter-cli-2.2.2.jar這個玩意兒就行,可以直接運行命令測試:
java -jar /usr/local/wenku/jodconverter-2.2.2/lib/jodconverter-cli-2.2.2.jar /tmp/1.doc /tmp/1.pdf
配置運行上面的命令成功之後,可以參考windows下的PHP代碼調用運行即可!
參考資料:
https://www.openoffice.org
http://blog.csdn.net/xyz_dream/article/details/52672319
https://zhidao.baidu.com/question/1047506507169557019.html
https://www.oschina.net/question/227511_87517
https://wiki.openoffice.org/wiki/Main_Page