PHP使用COM 获取RTF内容

时间:2023-01-22 05:39:29

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

2. 可能需要创建文件夹:Desktop
C:\Windows\SysWOW64\config\systemprofile\Desktop
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;
}