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;
}
相关文章
相关标签/搜索