//基于windows系統(tǒng)下和linux系統(tǒng)下的在線預(yù)覽word文檔功能
//----------------------------------------------------windows系統(tǒng)下start-------------------------------------------
//控制器:
//獲取文件路徑
$file = substr(thumb($extends['file']),1);
if(!is_file($file)){undefined
$this->error("文件不存在!");
}else{undefined
//獲取文件類型
$file_type = strtolower(substr($file,strrpos($file,".")+1));
switch ($file_type){undefined
case 'doc':
case 'docx':
$name = "show_word_".$id.".html";
$view_path = "Uploads/View_file/".$name;
if(file_exists($view_path)){undefined
$content = file_get_contents($view_path);
echo $content;
}else{undefined
view_word($file,$name);
}
break;
}
}
//view_word方法
//預(yù)覽word文件
function view_word($wordname,$htmlname){undefined
//建立一個(gè)指向新COM組件的索引
$word = new COM("word.application") or die("Unable to instanciate Word");
//顯示目前正在使用的Word的版本號(hào)
//echo "Loading Word, v. {$word->Version}";
//把它的可見性設(shè)置為0(假),如果要使它在最前端打開,使用1(真)
$word->Visible = 1;
//讀取Word內(nèi)容操作 START
//打開一個(gè)word文檔
$word->Documents->Open(realpath($wordname));
//定義一個(gè)目錄來存放生成的html文件,不存在則創(chuàng)建
$path = WEB_ROOT."Uploads/View_file/";
if (!file_exists($path)){undefined
mkdir($path);
}
//將filename.doc轉(zhuǎn)換為html格式,并保存為html文件
$word->Documents[1]->SaveAs($path.$htmlname,8);
//獲取htm文件內(nèi)容并輸出到頁面 (文本的樣式不會(huì)丟失)
$content = file_get_contents($path.$htmlname);
echo $content;
//獲取word文檔內(nèi)容并輸出到頁面(文本的原樣式已丟失)
// $content= $word->ActiveDocument->content->Text;
// echo $content;
//關(guān)閉與COM組件之間的連接
$word->Documents->close(true);
$word->Quit();
$word = null;
unset($word);
}
//----------------------------------------------------windows系統(tǒng)下end----------------------------------------------
//----------------------------------------------------linux系統(tǒng)下start-------------------------------------------
首先要在命令行中輸入下面內(nèi)容并執(zhí)行
wget http://www.winfield.demon.nl/linux/antiword-0.37.tar.gz
tar zxvf antiword-0.37.tar.gz
cd antiword-0.37
make
make install
make global_install
cp /root/bin/*antiword /usr/local/bin/
mkdir /usr/share/antiword
cp -R /root/.antiword/* /usr/share/antiword/
chmod 777 /usr/local/bin/*antiword
chmod 755 /usr/share/antiword/*
//控制器內(nèi)容:*/
header("Content-type: text/html; charset=utf-8");
$content = shell_exec('/usr/local/bin/antiword -w 0 -m UTF-8 '.$file);
echo '
';
print_r ($content);
echo '
';
//----------------------------------------------------linux系統(tǒng)下end----------------------------------------------
//特別聲明:windows下實(shí)現(xiàn)的預(yù)覽基本會(huì)按照原文檔樣式輸出,而linux下則是將內(nèi)容轉(zhuǎn)化成text內(nèi)容進(jìn)行輸出,會(huì)“失真”。 如果有更好的方法希望可以分享出來。
以上就是“基于windows系統(tǒng)下和linux系統(tǒng)下php的在線預(yù)覽word文檔功能”的詳細(xì)內(nèi)容,更多請關(guān)注木子天禾科技其它相關(guān)文章!