PHP使用COM 获取RTF内容

1. 需要在APP服务器上安装Office

2. 可能需要创建文件夹:Desktop
C:WindowsSysWOW64configsystemprofileDesktop
3. 可能需要设置权限  component service,中找到 “Microsoft Office ….”中的属性,设置相关的权限

(如果找不到:需要做以下步骤去添加

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 组件了。

2.由于用户没有操作excel的权限,需要通过如下操作对 Microsoft Excel Appliction 进行授权。
2.1运行:dcomcnfg.exe
2.2"组件服务"- >"计算机"- >"我的电脑"- >"DCOM配置"->找到word->属性->"标识"标签,选择"交互式用户" 
2.3->安全"标签"->在"启动和激活权限"上点击"自定义",然后点击对应的"编辑"按钮,在弹出的"安全性"对话框中填加 一个"NETWORK SERVICE"用户(注意要选择本计算机名),并给它赋予"本地启动"和"本地激活"权限.

)

4. 可能需要设置Apache服务的登录用户名及密码

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;
}
原文地址:https://www.cnblogs.com/krisy/p/5456254.html