ugrás a tartalomhoz

Word dokkumentum beolvasása

hunge · 2005. Dec. 4. (V), 19.02
Sziasztok a következő dolgot szeretném megoldani. Word dokumentumot kívánok txt-be alakítani majd a kapott txt fájlt berakni egy adatbázisba. Elég alaposan utánaolvastam már a témának így találtam meg töbek közt ezt http://weblabor.hu/hirek/20040429/word2html linket is.
így a korában használni kívánt antiword programot a jobb wvText programra cseréltem.
Ez parancssorba kiválóan működik! Pl: konzolba beírom wvText /home/pappg/Teszt.doc /home/pappg/Teszt.txt. A gond ott van, hogy nem sikerül rábírnom a php-t, hogy "adja ki" ezt a parancsot. Következő a kódom (az ürlap feltöltés és feltöltött állomány elhelyezését végző kódot nem irom ide mivel az egyrészt triviális feladat másrészt jól működik nálam)
  1. <?php .  
  2. .  
  3. .  
  4. .   
  5.         $program="/usr/bin/wvText";  
  6.        $mit=$all_tomb['tmp_name']. '/' .$all_tomb['name'];  
  7.        $mive"/tmp" ."/" ."ideglenes" .".txt";  
  8.        print "$program <br>\n";  
  9.        print "$mit <br>\n";  
  10.        print "$mive <br>\n";  
  11.        passthru("$program $mit"$mive);  
  12.        //passthru($futtat,$Doctxt); //ahol a $futtat egyenlő volt a program+mit+mivé -vel.    
  13.        //print "$program $mit $mive";        
  14.        //exec($program $mit $mive, $dokumentum);  
  15.          
  16.        $dokumentum=fopen("/tmp/ideglenes.txt",'r');   
  17.        foreach($dokumentum as $sor){         
  18.        print "$sor";  
  19.        }  
  20.     //itt jön majd az ideglenes állomány törlése untouch()-val.  
  21.     // illetve az adatbázisba írás,de most a cél a képernyő.  
  22. ....  
  23. ?>  
  24.    
Mint a kommentekből látható elég sok féle képpen próbáltam megoldani, rá is ment fél napom, de sajnos kifogott rajtam. Ugyanis még igencsak ujjonc vagyok php terén + soha nem hívtam meg külső programot a php-ből. Mi(ke)t rontottam/hattam el? Nagyon köszönök minden segítséget/ötletet.
 
1

Foreach? Fopen?

janoszen · 2005. Dec. 4. (V), 19.22
Hallod, sztem sürgősen nézd meg, hogy az fopen mit csinál. Ugyanis a dokumentum egy filepointer. Nem array.

Amit te akarsz:
  1. <?php  
  2. while($s = fgets($dokumentum))  
  3. {  
  4.  echo($s . "<br />");  
  5. }  
  6.   
  7. // EZ FONTOS! Ne hagyj nyitva fájlt!  
  8. fclose($dokumentum);  
2

Valóban

hunge · 2005. Dec. 4. (V), 19.59
fopent() célszerű használni. Ezt elnéztem.Hiába kezdő/láma vagyok. Bár mintha lett volna egy ilyen verzió is de 'vagy ötszür újra irtam ugyhogy már nem tudom.
fclose újabb hiba. (amúgy letöröltem volna a fájlt a script végén) Azért jár a fél fekete pont.
De sajnos nem ez a legnagyobb gond. Hanem az hogy a /temp/ideglenes.txt nem tudtam létrehozatni a scripttel. Mivel nem tudom, hogy jelenesetben hogy kellene meghívni a passthru()/exec() függvényt ahhoz hogy jól müködjön.
3

A megoldás

hunge · 2005. Dec. 6. (K), 12.44
Na sikerült megcsinálni a helyes kód a következő:
  1. <?php  
  2. $konyvtar"/var/www/tmp/";  
  3. ...  
  4. ...  
  5. ...  
  6. if(is_uploaded_file($all_tomb['tmp_name'])){  
  7.           
  8.             move_uploaded_file($all_tomb['tmp_name'] ,  
  9.            $konyvtar.$all_tomb['name']) or die("Nem sikerüt az áthelyezés");  
  10.            print "Az áthelyezés és sikerült a <strong>$konyvtar</strong> könyvtárba <br>\n";  
  11.             
  12.            //*******dokumentum konvertálása txtvé*******  
  13.              
  14.            $program="/usr/bin/wvText";  
  15.            $mit=$konyvtar'/' .$all_tomb['name'];  
  16.            $mive"/var/www/tmp/" ."/" ."ideglenesallomany" .".txt";  
  17.              
  18.            //print "$program $mit $mive <br>\n <br>\n ";      
  19.            passthru("$program $mit $mive ");  
  20.   
  21.            $dokumentum=fopen($mive,'r'or die ("Az állományt nem lehet megnyitni!");  
  22.             while(!feof($dokumentum)){  
  23.                 $sor =fgets($dokumentum,1024);  
  24.                 print "$sor <br>\n";  
  25.             }   
  26.         }//belső if vége   
  27. ?>  
A megoldás kulcs az volt hogy a feltöltött állományra nem lehet az ideglenes elérési úttal hivatkozni hanem ténylegesen el kell helyezni valahova.

Más, rájöttem hogy a multkor azt kevertem, hogy a megnyitott fájlt olvasásra soronként kell feldolgozni...
4

Még egy kis hiba

hunge · 2005. Dec. 6. (K), 14.08
Rájöttem hogy a script még nem tökéletes, ha olyan dokumentumot adok neki aminek a nevében szóköz szerepel akkor elszáll, a wvtext program. Nem tudok valami olyan php függvényt ami szóköz problémát megoldaná? Mint a htmlspecialchars() persze az nem jó it... Nézegettem a manualt de én nem találtam. Persze lehet hogy nem jó helyen kerestem...
5

str_replace

Pal_ur · 2005. Dec. 6. (K), 20.17
... vagy ereg_replace.

Pál_úr
6

Köszönöm, Jólesz!

hunge · 2005. Dec. 6. (K), 21.25
Jónak tűnik kár, hogy nincs olyan függvény ami direktbe a space-eket kivenné. Így most át kell néznem a php karakterlánc kezelését. :-( . Amit (karakterlánc kezelés) utálok. Na mind1. Üdv hunge.