PHP使用COM 獲取RTF內容

1. 須要在APP服務器上安裝Office安全

2. 可能須要建立文件夾:Desktop
C:\Windows\SysWOW64\config\systemprofile\Desktop
3. 可能須要設置權限  component service,中找到 「Microsoft Office ….」中的屬性,設置相關的權限服務器

(若是找不到:須要作如下步驟去添加app

1.由於Dcomcnfg是一個32位和配置,在64系統下並不能被徹底支持,所以須要對WIN2008 X64系統進行DCOM配置,操做步驟以下:
1.1運行:mmc -32
1.2在菜單中選擇File->Add/Remove Snap
添加Component Services,然後在Component Services下找到Excel後再進行配置,就和32位系統一樣能夠看到Microsoft Excel Appliction 組件了。ui

2.因爲用戶沒有操做excel的權限,須要經過以下操做對 Microsoft Excel Appliction 進行受權。
2.1運行:dcomcnfg.exe
2.2"組件服務"- >"計算機"- >"個人電腦"- >"DCOM配置"->找到word->屬性->"標識"標籤,選擇"交互式用戶" 
2.3->安全"標籤"->在"啓動和激活權限"上點擊"自定義",而後點擊對應的"編輯"按鈕,在彈出的"安全性"對話框中填加 一個"NETWORK SERVICE"用戶(注意要選擇本計算機名),並給它賦予"本地啓動"和"本地激活"權限.spa

)excel

4. 可能須要設置Apache服務的登陸用戶名及密碼code

function getRTFtext($rtfFileName) {
    $result='';
    if (!is_file($rtfFileName)) {
        throw new ErrorException("File not found.");
    }
    $rtfFileName = realpath($rtfFileName);

    // Connect to Word
    if (!class_exists('COM')) {
        throw new ErrorException('COM extension is not enabled.');
    }

    $word = new COM("word.application");
    if (!$word) {
        throw new ErrorException('Unable to instantiate Word COM object.');
    }
    // Check the Word version.
    if ($word->Version < 12) {
        $word->Quit();
        $word = null;
        throw new ErrorException('The version of Word is too old.');
    }
    // $word->visible = 1;
    try {
        // Documents.Open: http://msdn.microsoft.com/en-us/library/office/ff835182%28v=office.14%29.aspx
        //$word->Visible=true;
        $word->Documents->Open($rtfFileName, FALSE, TRUE);

        $result= $word->ActiveDocument->content->Text;
        $word->ActiveDocument->Close(FALSE);
        //echo ''.$test;
    } catch (Exception $e) {
        $word->Quit();
        $word = null;
        throw $e;
    }
    try {
        $word->Quit();
        $word = null;
    } catch (Exception $e) {
        var_dump($e);
    }

    return $result;
}
相關文章
相關標籤/搜索