source: pmb4.2/trunk/fuentes/pmb/catalog/explnum/index_docnum/index_mso.class.php @ 815

Last change on this file since 815 was 815, checked in by jrpelegrina, 4 years ago

Initial release of pmb 4.2

  • Property svn:executable set to *
File size: 6.1 KB
Line 
1<?php
2// +-------------------------------------------------+
3// © 2002-2004 PMB Services / www.sigb.net pmb@sigb.net et contributeurs (voir www.sigb.net)
4// +-------------------------------------------------+
5// $Id: index_mso.class.php,v 1.3 2013-01-31 11:32:45 mbertin Exp $
6
7if (stristr($_SERVER['REQUEST_URI'], ".class.php")) die("no access");
8
9/**
10 * Classe qui permet la gestion de l'indexation des fichiers microsoft office
11 */
12
13abstract class index_mso {
14
15        protected $filename='';
16        protected $mimetype='';
17        protected $extension='';
18        protected $convert_to='';
19        protected $tmp_filename='';
20        protected $to_filename='';
21        protected $text='';
22        protected $params=array();
23       
24        function __construct($filename, $mimetype='', $extension='', $convert_to='') {
25                $this->filename=realpath($filename);
26                if ($mimetype)$this->mimetype=$mimetype;
27                if ($extension) $this->extension=$extension;
28                $this->get_parameters();
29        }
30       
31        function get_parameters() {
32                global $pmb_indexation_docnum_ext;
33                $all_params=array();
34                $all_params=explode(';',$pmb_indexation_docnum_ext);
35                if (count($all_params)) {
36                        foreach($all_params as $v) {
37                                $ext_params=explode('=',$v);
38                                if (count($ext_params)) {
39                                        switch($ext_params[0]) {
40                                                case 'pyodconverter_cmd' :
41                                                case 'jodconverter_cmd' :
42                                                case 'pdftotext_cmd' :
43                                                case 'jodconverter_url' :       
44                                                        $this->params[$ext_params[0]]=$ext_params[1];
45                                                        break;
46                                        }
47                                }
48                        }
49                }
50                if (!$this->params['pdftotext_cmd']) {
51                        $this->params['pdftotext_cmd']="/usr/bin/pdftotext -enc UTF-8 %1s -";
52                }
53        }
54       
55        function get_text($filename){
56                global $charset;
57                $done=false;
58                if ($this->params['pyodconverter_cmd']) {
59                        $this->to_filename=$this->filename.'.'.$this->convert_to;
60                        $cmd = sprintf($this->params['pyodconverter_cmd'], $this->filename,$this->to_filename);
61                        @exec($cmd);
62                        if(file_exists($this->to_filename)) {
63                                $this->text=file_get_contents($this->to_filename);
64                        }
65                        @unlink($this->to_filename);
66                        $done=true;
67                }
68                if (!$done && $this->params['jodconverter_cmd']) {             
69                        $this->tmp_filename=$this->filename.'.'.$this->extension;
70                        @copy($this->filename, $this->tmp_filename);
71                        $this->to_filename=$this->filename.'.'.$this->convert_to;
72                        $cmd = sprintf($this->params['jodconverter_cmd'], $this->tmp_filename,$this->to_filename);
73                        @exec($cmd);
74                        if(file_exists($this->to_filename)) {
75                                $this->text=file_get_contents($this->to_filename);
76                        }
77                        @unlink($this->tmp_filename);
78                        @unlink($this->to_filename);
79                        $done=true;
80                }
81                if (!$done && $this->params['jodconverter_url']) {     
82                        $this->tmp_filename=$this->filename.'.'.$this->extension;
83                        @copy($this->filename, $this->tmp_filename);
84                        $this->to_filename=$this->filename.'.'.$this->convert_to;
85                        $url=sprintf($this->params['jodconverter_url'],$this->to_filename);
86                        $post=array('inputDocument'=>'@'.$this->tmp_filename);
87                        $res='';
88                        $ch=curl_init();
89                        curl_setopt($ch, CURLOPT_URL, $url);
90                        curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
91                        curl_setopt($ch, CURLOPT_POST, true);
92                        curl_setopt($ch, CURLOPT_POSTFIELDS, $post);
93                        $res=curl_exec($ch);
94                        curl_close($ch);
95                        if ($res && substr($res,0,6)!=='<html>') {
96                                $this->text=$res;
97                                $done=true;
98                        }
99                        @unlink($this->tmp_filename);
100                        @unlink($this->to_filename);
101                }       
102                if($done && $charset != 'utf-8'){
103                        $this->text=utf8_decode($this->text);
104                } 
105                return $this->text;
106        }
107       
108}
109
110
111class index_mso_doc extends index_mso {
112       
113        protected $mimetype='application/msword';
114        protected $extension='doc';
115        protected $convert_to='txt';
116}
117
118class index_mso_xls extends index_mso {
119       
120        protected $mimetype='application/vnd.ms-excel';
121        protected $extension='xls';
122        protected $convert_to='csv';
123}
124
125class index_mso_ppt extends index_mso {
126       
127        protected $mimetype='application/vnd.ms-powerpoint';
128        protected $extension='ppt';
129        protected $convert_to='pdf';
130       
131        function get_text($filename){
132                global $charset;
133                $done=false;
134                if ($this->params['pyodconverter_cmd']) {
135                        $this->to_filename=$this->filename.'.'.$this->convert_to;
136                        $cmd = sprintf($this->params['pyodconverter_cmd'], $this->filename,$this->to_filename);
137                        @exec($cmd);
138                        if(file_exists($this->to_filename)) {
139                                $cmd=sprintf($this->params['pdftotext_cmd'], $this->to_filename);
140                                $fp = popen($cmd, "r");
141                                while(!feof($fp)){
142                                        $line = fgets($fp,4096); 
143                                        $this->text.= $line;
144                                }
145                                pclose($fp);
146                        }
147                        @unlink($this->to_filename);
148                        $done=true;
149                }
150                if (!$done && $this->params['jodconverter_cmd']) {             
151                        $this->tmp_filename=$this->filename.'.'.$this->extension;
152                        @copy($this->filename, $this->tmp_filename);
153                        $this->to_filename=$this->filename.'.'.$this->convert_to;
154                        $cmd = sprintf($this->params['jodconverter_cmd'], $this->tmp_filename,$this->to_filename);
155                        @exec($cmd);
156                        if(file_exists($this->to_filename)) {
157                                $cmd=sprintf($this->params['pdftotext_cmd'], $this->to_filename);
158                                $fp = popen($cmd, "r");
159                                while(!feof($fp)){
160                                        $line = fgets($fp,4096); 
161                                        $this->text.= $line;
162                                }
163                                pclose($fp);
164                        }
165                        @unlink($this->tmp_filename);
166                        @unlink($this->to_filename);
167                        $done=true;
168                }
169                if (!$done && $this->params['jodconverter_url']) {     
170                        $this->tmp_filename=$this->filename.'.'.$this->extension;
171                        @copy($this->filename, $this->tmp_filename);
172                        $this->to_filename=$this->filename.'.'.$this->convert_to;
173                        $url=sprintf($this->params['jodconverter_url'],$this->to_filename);
174                        $post=array('inputDocument'=>'@'.$this->tmp_filename);
175                        $res='';
176                        $ch=curl_init();
177                        curl_setopt($ch, CURLOPT_URL, $url);
178                        curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
179                        curl_setopt($ch, CURLOPT_POST, true);
180                        curl_setopt($ch, CURLOPT_POSTFIELDS, $post);
181                        $res=curl_exec($ch);
182                        curl_close($ch);
183                        if ($res && substr($res,0,6)!=='<html>') {
184                                file_put_contents($this->to_filename,$res);
185                                if(file_exists($this->to_filename)) {
186                                        $cmd=sprintf($this->params['pdftotext_cmd'], $this->to_filename);
187                                        $fp = popen($cmd, "r");
188                                        while(!feof($fp)){
189                                                $line = fgets($fp,4096); 
190                                                $this->text.= $line;
191                                        }
192                                        pclose($fp);
193                                }
194                                $done=true;
195                        }
196                        @unlink($this->tmp_filename);
197                        @unlink($this->to_filename);
198                       
199                }       
200                if($done && $charset != 'utf-8'){
201                        $this->text=utf8_decode($this->text);
202                } 
203                return $this->text;
204        }
205               
206}
207
Note: See TracBrowser for help on using the repository browser.