<?php
//基于windows系统下和linux系统下的在线预览word文档功能
//----------------------------------------------------windows系统下start-------------------------------------------
//控制器:
//获取文件路径
$file = substr(thumb($extends['file']),1);
if(!is_file($file)){
$this->error("文件不存在!");
}else{
//获取文件类型
$file_type = strtolower(substr($file,strrpos($file,".")+1));
switch ($file_type){
case 'doc':
case 'docx':
$name = "show_word_".$id.".html";
$view_path = "Uploads/View_file/".$name;
if(file_exists($view_path)){
$content = file_get_contents($view_path);
echo $content;
}else{
view_word($file,$name);
}
break;
}
}
//view_word方法
//预览word文件
function view_word($wordname,$htmlname){
//建立一个指向新COM组件的索引
$word = new COM("word.application") or die("Unable to instanciate Word");
//显示目前正在使用的Word的版本号
//echo "Loading Word, v. {$word->Version}";
//把它的可见性设置为0(假),如果要使它在最前端打开,使用1(真)
$word->Visible = 1;
//读取Word内容操作 START
//打开一个word文档
$word->Documents->Open(realpath($wordname));
//定义一个目录来存放生成的html文件,不存在则创建
$path = WEB_ROOT."Uploads/View_file/";
if (!file_exists($path)){
mkdir($path);
}
//将filename.doc转换为html格式,并保存为html文件
$word->Documents[1]->SaveAs($path.$htmlname,8);
//获取htm文件内容并输出到页面 (文本的样式不会丢失)
$content = file_get_contents($path.$htmlname);
echo $content;
//获取word文档内容并输出到页面(文本的原样式已丢失)
// $content= $word->ActiveDocument->content->Text;
// echo $content;
//关闭与COM组件之间的连接
$word->Documents->close(true);
$word->Quit();
$word = null;
unset($word);
}
//----------------------------------------------------windows系统下end----------------------------------------------
//----------------------------------------------------linux系统下start-------------------------------------------
首先要在命令行中输入下面内容并执行
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/*
//控制器内容:*/
header("Content-type: text/html; charset=utf-8");
$content = shell_exec('/usr/local/bin/antiword -w 0 -m UTF-8 '.$file);
echo '<pre>';
print_r ($content);
echo '</pre>';
//----------------------------------------------------linux系统下end----------------------------------------------
//特别声明:windows下实现的预览基本会按照原文档样式输出,而linux下则是将内容转化成text内容进行输出,会“失真”。 如果有更好的方法希望可以分享出来。
- 前言
- Interview
- 01-cookie与session
- 04-mysql索引
- 05-memcache与redis
- 06-高并发
- 07-主从同步
- 08-myisam与inondb
- 09-框架区别
- 10-php7新特性
- 11-设计模式
- 12-MySQL优化
- 13-php自动加载机制
- 14-MongoDB命令
- 15-Python爬虫之scrapy框架
- 16-php运行原理
- 17-单点登录
- Linux
- linux常见命令
- awk
- sed
- bash-shell
- vim学习教程
- PHP
- php运行机制
- php执行效率
- word2pdf
- php预览Word
- wechat_wafter2
- Python
- python
- win-bat
- svn操作命令
- git常用操作命令
- git_install
- gitlab安装
- nextcloud
- docker