windows系統 安裝OpenOffice(office文檔轉成PDF文件)

摘要:最近在做文件管理系統的時候,需要將office文檔轉成PDF文件,於是想到調用OpenOffice軟件的com組件去處理

1.首先是下載OpenOffice安裝包(官網下載需要翻牆,推薦雲牆,購買流量下載還是蠻快的)

        雲盤:https://pan.baidu.com/s/1i43GzPV

2.配置組件服務

        A.OpenOffice 安裝完成之後,按 win+R 快捷鍵進入運行菜單,輸入 Dcomcnfg 打開組件服務

        B.

        C.右鍵點擊屬性選擇安全,下面都選擇自定義

然後選擇前兩個的編輯,分別選中所有權限


        D.確定後選擇標識,並將用戶賬號選擇爲 交互式用戶.


3.使用命令後臺啓動服務(只需要執行一次,就可以使軟件一直在後臺運行,即使重啓服務器也不受影響)

    首先需要找到你的安裝位置(在C盤搜索soffice.exe文件,發現在C:\Program Files\OpenOffice 4\program)

    所以先進入項目位置c:

                                    cd Program Files\OpenOffice 4\program

                                    輸入命令:soffice -headless-accept="socket,host=127.0.0.1,port=8100;urp;"-nofirststartwizard啓動

4.在php.ini中開啓com_dotnet擴展(我用的PHP7),添加extension=php_com_dotnet.dll,重啓服務器後


現在我們就可以去新建一個test.php文件進行測試了

5.代碼如下:

classPDFConverter

{

private$com;

/**

* 需要安裝openoffice並在後臺運行

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

*/

public function__construct()

{

try{

$this->com=newCOM('com.sun.star.ServiceManager');

}catch(Exception$e) {

die('Please be sure that OpenOffice.org is installed.');

}

}

/**

* 執行PDF文件(絕對路徑)轉換

*@param$source [source file]

*@param$export [export file]

*/

public functionexecute($source,$export)

{

$source='file:///'.str_replace('\\','/',$source);

$export='file:///'.str_replace('\\','/',$export);

$this->convertProcess($source,$export);

}

/**

* 獲取PDF頁面

*@param$pdf_path [absolute path]

*@returnint

*/

public functiongetPages($pdf_path)

{

if(!file_exists($pdf_path))return0;

if(!is_readable($pdf_path))return0;

if($fp=fopen($pdf_path,'r')) {

$page=0;

while(!feof($fp)) {

$line=fgets($fp,255);

if(preg_match('/\/Count [0-9]+/',$line,$matches)) {

preg_match('/[0-9]+/',$matches[0],$matches2);

$page= ($page<$matches2[0]) ?$matches2[0] :$page;

}

}

fclose($fp);

return$page;

}

return0;

}

private functionsetProperty($name,$value)

{

$struct=$this->com->Bridge_GetStruct('com.sun.star.beans.PropertyValue');

$struct->Name=$name;

$struct->Value=$value;

return$struct;

}

private functionconvertProcess($source,$export)

{

$desktop_args=array($this->setProperty('Hidden',true));

$desktop=$this->com->createInstance('com.sun.star.frame.Desktop');

$export_args=array($this->setProperty('FilterName','writer_pdf_Export'));

$program=$desktop->loadComponentFromURL($source,'_blank',0,$desktop_args);

$program->storeToURL($export,$export_args);

$program->close(true);

}

}

//$arr = array('doc', 'docx', 'xls', 'xlsx', 'ppt', 'pptx');

$converter=newPDFConverter();

$source=__DIR__.'/office/test.'.'pptx';//轉換前文件(絕對路徑)

$export=__DIR__.'/pdf/test.'.'pptx'.'.pdf';//轉換後文件(絕對路徑)

$converter->execute($source,$export);



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