關於使用PHP轉換office文件爲PDF的解決方案!

關於使用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服務管理

設置“安全”選項卡

選中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

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