如何在线预览office文档

一、介绍

1.目前前端只能实现在线预览pdf格式的文件,可以用pdf.js或者jquery.media.js来实现。
2.要实现其他格式的文件预览,需要在后端进行格式转换。

二、具体步骤

1.目前我了解到的后端对office文档格式的转换方法有:

a、先转换成swf格式->在转换成pdf格式
b、借用第三方工具,如openoffice,通过其给的接口,用php后者java或者c#来实现.

2.我用的的是上面提到的第二种方法,下面进行详细介绍。

a、首先下载openoffice软件,下载链接
b、oppenoffice权限设置
1、cmd 运行Dcomcnfg.exe->组件服务->计算机->我的电脑->DCOM配置->OpenOffice Service Manager
2、右键选择属性这里写图片描述
3、设置步骤图示

这里写图片描述
这里写图片描述
这里写图片描述

c、php环境及配置(开启php中com组件服务)
  php环境我用的是xampp集成环境,php版本为5.6.21
  具体配置:到php.ini中打开com选项    com.allow_dcom = true
  PS:PHP 5.4.5后,com/dotnet 模块已经成了单独的扩展,所以需要在PHP.ini中配置extension=php_com_dotnet.dll ,如果PHP VERSION<5.4.5 则不需要。

三、格式转换代码实现

<?php 
 class office2pdf  
    {  
        private $osm;  
        public function __construct()  
        {  
            $this->osm = new COM("com.sun.star.ServiceManager")or die ("Please be sure that OpenOffice.org is installed.n");   
        }    
        public function MakePropertyValue($name,$value)  
        {  
            $oStruct = $this->osm->Bridge_GetStruct("com.sun.star.beans.PropertyValue");  
            $oStruct->Name = $name;  
            $oStruct->Value = $value;  
            return $oStruct;  
        }            
        public function transform($input_url, $output_url)  
        {  
            $args = array($this->MakePropertyValue("Hidden",true));  
            $oDesktop = $this->osm->createInstance("com.sun.star.frame.Desktop");  
     $oWriterDoc = $oDesktop->loadComponentFromURL($input_url,"_blank", 0, $args);  
        $export_args = array($this->MakePropertyValue("FilterName","writer_pdf_Export"));  
            $oWriterDoc->storeToURL($output_url,$export_args);  
            $oWriterDoc->close(true);  
            return $this->getPdfPages($output_url);  
        }           
        public function run($input,$output)
        {  
            $input = "file:///" . str_replace("\\","/",$input);  
            $output = "file:///" . str_replace("\\","/",$output);  
            return $this->transform($input, $output);  
        }        
        /** 
         * 获取PDF文件页数的函数获取 
         * 文件应当对当前用户可读(linux下) 
         * @param  [string] $path [文件路径] 
         * @return int 
         */  
        public function getPdfPages($path)  
        {  
            if(!file_exists($path)) return 0;  
            if(!is_readable($path)) return 0;  
            // 打开文件  
            $fp=@fopen($path,"r");  
            if (!$fp)   
            {  
                return 0;  
            }  
            else   
            {  
                $max=0;  
                while(!feof($fp))   
                {  
                    $line = fgets($fp,255);  
                    if (preg_match('/\/Count [0-9]+/', $line, $matches))  
                    {  
                        preg_match('/[0-9]+/',$matches[0], $matches2);  
                        if ($max<$matches2[0]) $max=$matches2[0];  
                    }  
                }  
                fclose($fp);  
                // 返回页数  
                return $max;  
            }  
        }       
    }  
  $con=new office2pdf();
  $con->run("D:/xampp/htdocs/design/yuanwenjian/ax.xlsx","D:/xampp/htdocs/design/xinwenjian/ax.pdf");
  echo $con->getPdfPages("D:/xampp/htdocs/design/xinwenjian/ax.pdf");
    ?>

四、pdf格式文件预览代码实现

<!DOCTYPE html>
<html>
         <head>
                   <meta charset="UTF-8">
                   <title></title>
                   <script src="../js/jquery-3.1.0.min.js" type="text/javascript" charset="utf-8"></script>
                   <script src="../js/jquery.media.js" type="text/javascript" charset="utf-8"></script>
                   <script src="../js/jquery.metadata.js" type="text/javascript" charset="utf-8"></script>
         </head>
         <body>
        <a class="media {type: 'html'}" href="../output/ad.pdf"></a> 
         </body>
         <script type="text/javascript">
                   $('a.media').media({width:1200, height:900});
         </script>
</html>

五、参考博客
参考博客

评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值