Navigacija
Lista poslednjih: 16, 32, 64, 128 poruka.

Iscitavanje sadrzaja dokumenta

[es] :: PHP :: Iscitavanje sadrzaja dokumenta

[ Pregleda: 1323 | Odgovora: 5 ] > FB > Twit

Postavi temu Odgovori

Autor

Pretraga teme: Traži
Markiranje Štampanje RSS

vladimirn
Vladimir Nikolic
Novi Sad

Član broj: 38585
Poruke: 81
*.static.sbb.co.yu.



Profil

icon Iscitavanje sadrzaja dokumenta24.01.2007. u 11:43 - pre 210 meseci
Dobar dan.
Naisao sam na sledeci problem.

Potrebno mi je da sadrzaj nekog dokumenta "iscitam" i da sadrzaj tog dokumenta prebacim u bazu.

Elem, koristio sam sledeci code:

Code:
$handle = @fopen("documentacion/test.doc", "r");
if ($handle) {
    while (!feof($handle)) {
        $buffer = fgetss($handle);
        
        echo $buffer;
    }
    fclose($handle);
}


Ukoliko je to dokument se .txt ekstenzijom, nije nikakav problem dobiti citljiv rezultat. Medjutim problem se javlja kada je u pitanju microsoft word.
Pre nego 'dodjem' do teksta, nailazim na stotine kukica kvacica i sl... pokusao sam da sa substr() resim problem, ali je duzina tog "nerazumljivog dela" pre pravog teksta razlicita u svakom dokumentu. ISte kukice i kvacice nalaze se i nakon razumljivog teksta.
To izgleda otprilike ovako (skratio sam dobar deo sa pocetka i sa kraja fajla, radi lakseg prikaza):

Code:
@@@=@@@@¸¸¸d¸¸¸¸¸¸¤¤¤¤¤¤ÿÿÿÿ Proba za Vladu. øðøåhXs/hXs/mH sH


Ideja je da se dokument uploadovan na server iscita, da se njegov sadrzaj upise u tabelu u bazi, kako bi kasnije mogao da radim pretragu. U pitanju je veliki broj dokumenata, koji se svakodnevno azuriraju i menjaju.
Unapred hvala na svakoj ideji i savetu.
 
Odgovor na temu

Nemanja Avramović
Engineering Manager
MENU Technologies
Beograd, Srbija

Moderator
Član broj: 32202
Poruke: 4391
194.106.174.*

Sajt: https://avramovic.info


+46 Profil

icon Re: Iscitavanje sadrzaja dokumenta24.01.2007. u 12:17 - pre 210 meseci
Pa ne može to tek tako. DOC su binarni fajlovi i to što ti čitaš je binarni kod. Moraš prvo doc da pretvoriš u txt (plain text). Jedan upit na google-u ti rešava ovaj problem:

Google: "doc2txt php"
Laravel Srbija.

[NE PRUŽAM PODRŠKU ZA PHP PREKO PRIVATNIH PORUKA!]
 
Odgovor na temu

vladimirn
Vladimir Nikolic
Novi Sad

Član broj: 38585
Poruke: 81
*.static.sbb.co.yu.



Profil

icon Re: Iscitavanje sadrzaja dokumenta25.01.2007. u 09:10 - pre 210 meseci
Postovani Nemanja, hvala na savetu, konkretno, nisam uspeo da resim to kroz doc2text, dobio sam uglavnom linkove vezane za istog programera koji je uradio neki konvertor i koji nije besplatan, ali sam isceprkao i taj kod na kraju, probao ga i bilo je tu dosta 'brljotina' prilikom vracanja rezultata. Nastavio sam dalje i pronasao kod koji sam dodao ispod, i zadovoljan sam kako radi.
Sledece je da nadjem kako isto to uraditi sa excell fajlom, PDF-om i td. :)
U svakom slucaju, ja zahvaljujem jos jednom a nadam se da ce ovo parce koda pomoci nekom da razume i da resi slican problem

Code:
<?php
// function taken from http://uk.php.net/htmlentities
function convert_word_to_ascii($string)
{
   $string = stripslashes($string);

   if ( stristr($_SERVER['HTTP_USER_AGENT'], "Opera") )
   $search = array('‘',
               chr(96),
               '’',
               '„',
               '”',
               '“',
               '…',
               '–');
                          
   if ( stristr($_SERVER['HTTP_USER_AGENT'], "Firefox") || stristr($_SERVER['HTTP_USER_AGENT'], "MSIE") )
   $search = array(chr(145),
               chr(146),
               chr(96),
               chr(132),
               chr(147),
               chr(148),
               chr(133),
               chr(150));
                          
   $replace = array(    "'",
               "'",
               "'",
               '"',
               '"',
               '"',
               '...',
               '-');

   $new_string = str_replace($search, $replace, $string);
   return addslashes($new_string);
};

$filename = 'putanja do fajla.doc';// moze biti i fajl koji pokupimo kroz form

// first open the (DOC) file
$fo = fopen($filename, 'r');
$contents = '';

// it seems the 'header' stuff in word files is 2560 long, so get that out the way
$header = fread($fo,2560);

// get the rest of the doc
while (!feof($fo))
{
   $contents.=fgets($fo);
}

// convert word special chars - easier to manage, etc.
$contents = convert_word_to_ascii($contents);
// now strip out all the junk/control chars, etc
$plaintext = stripslashes(substr($contents, 0, strpos($contents, '00')));

// get rid of any remaining control chars
$plaintext = preg_replace('/'.chr(19).'(.*?)'.chr(20).'/', '', $plaintext);
$plaintext = str_replace(chr(21), '', $plaintext);

// voila!
echo $plaintext;
?> 
 
Odgovor na temu

Nemanja Avramović
Engineering Manager
MENU Technologies
Beograd, Srbija

Moderator
Član broj: 32202
Poruke: 4391
194.106.174.*

Sajt: https://avramovic.info


+46 Profil

icon Re: Iscitavanje sadrzaja dokumenta25.01.2007. u 14:35 - pre 209 meseci
Kako nije besplatno? Google te vodi na http://doc2txt.qarchive.org/ a sa njega odeš na http://obninsk.name/obninsk_doc/ (na kraju ovog kratkog teksta) i tamo besplatno skineš doc2txt paket koji savršeno radi.
Laravel Srbija.

[NE PRUŽAM PODRŠKU ZA PHP PREKO PRIVATNIH PORUKA!]
 
Odgovor na temu

vladimirn
Vladimir Nikolic
Novi Sad

Član broj: 38585
Poruke: 81
*.static.sbb.co.yu.



Profil

icon Re: Iscitavanje sadrzaja dokumenta26.01.2007. u 09:22 - pre 209 meseci
Skinuo i uradio, juce, ali na nekoliko dokumenata koje sam probao, dobio sam puno kukica i kvacica u sred teksta. Kod mene nije radio savrseno. :)
U svakom slucaju, puno ti hvala, zaista si mi mnogo pomogao :)
ps. Zapravo radilo je lepo sa malo teksta na srtanici, bez tabela i sl..
 
Odgovor na temu

Nemanja Avramović
Engineering Manager
MENU Technologies
Beograd, Srbija

Moderator
Član broj: 32202
Poruke: 4391
212.200.145.*

Sajt: https://avramovic.info


+46 Profil

icon Re: Iscitavanje sadrzaja dokumenta26.01.2007. u 12:25 - pre 209 meseci
Eh, pa ne znam, ja sam probao sa text-only dokumentima i radilo je lepo.
Laravel Srbija.

[NE PRUŽAM PODRŠKU ZA PHP PREKO PRIVATNIH PORUKA!]
 
Odgovor na temu

[es] :: PHP :: Iscitavanje sadrzaja dokumenta

[ Pregleda: 1323 | Odgovora: 5 ] > FB > Twit

Postavi temu Odgovori

Navigacija
Lista poslednjih: 16, 32, 64, 128 poruka.