Ler .doc do MS Word com PHP usando COM

1,471 views
Skip to first unread message

luiz tanure

unread,
Jun 28, 2008, 3:13:00 AM6/28/08
to ph...@googlegroups.com
pessoal,

mais uma vez procurando uma luz aqui..

é o sequinte,,, preciso desenvolver um aplicativo que leia uns documentos no word ( aproximadamente 3 mil ) e armazene alguns dados num BD...  ler com fopen  é gambiarra (ele abre com muito lixo, de formatação interna do formato, no inicio e no final), pelo que li,  o certo é usar  COM (http://br.php.net/manual/pt_BR/class.com.php), mas ESSA PORRA NAO FUNCIONA NEM F****** aqui...

sempre aparece um erro do tipo "Fatal error: Uncaught exception 'com_exception' with message 'Failed to create COM object"

e quando nao aparece erro, simplesmente não acontece nada... fica eternamente "carregando" algo, como em um loop eterno...

li a documentação (em parte...) procurei bastante e nao achei nada... alguem tem uma luz? preciso alterar algo no php.ini ( a documentação diz que não...)


enfim... agradeço qq ajuda!

--
Luiz Tanure

Rafael Gomes Dantas

unread,
Jun 30, 2008, 10:46:25 AM6/30/08
to ph...@googlegroups.com
Não sei se eu estou certo, mas acho que isso chama as dll's do SO... Se for o caso, é provavel que o que vc está pedindo só funcione em um servidor Windows.

Anyway, acho que deve ter outras formas de abrir um .doc para leitura. Se eu achar alguma coisa aqui eu envio pra lista.

2008/6/28 luiz tanure <leta...@gmail.com>:

Charles Schaefer

unread,
Jun 30, 2008, 11:02:55 AM6/30/08
to ph...@googlegroups.com
Depois dê uma olhada nessa extensão:

http://www.wstech2.net/index.php?do=puno

Ela usa a API do OpenOffice para manipular arquivos dele, mas pode ser que consiga também fazer o mesmo com .doc.


Rafael Gomes Dantas escreveu:
-- 
Charles Schaefer - Web Developer
Email: charles...@gmail.com
Tels.: +55 31 9317-2862
       +55 31 2526-4096

ATENÇÃO: Não imprima este e-mail. A natureza agradece. E seu bolso também.
WARNING: Don't print this e-mail. The nature is thankful. And your money too

luiz tanure

unread,
Jun 30, 2008, 11:48:42 AM6/30/08
to ph...@googlegroups.com
meu servidor é um windows 2003... não achei nada falando sobre ter que ativar algo ou configuração alterada...
 
mas valeu... vopu dar uma olhada nessa extensão...
 
 
Luiz Tanure

Charles Schaefer

unread,
Jun 30, 2008, 12:00:08 PM6/30/08
to ph...@googlegroups.com
Só para saber, você tem o word instalado no servidor?
Salvo engano, é preciso tê-lo instalado para conseguir ler os arquivos .doc.


luiz tanure escreveu:

--

luiz tanure

unread,
Jun 30, 2008, 12:22:01 PM6/30/08
to ph...@googlegroups.com
olha... seu eu cometi uma burrice dessas....
 
 
nao sabe o quanto me sinto ignorante de nao ter pensado nisso...
 
 
 
Luiz Tanure

luiz tanure

unread,
Jun 30, 2008, 3:39:00 PM6/30/08
to ph...@googlegroups.com
Feedback
 
assinando atestado de burrice:
 
-  a solução era instalar o MS Word no servidor, como Chrales Schaefer falou.
 
mas valeu o tópico. pra conhecer o projeto que o Rafael Dantas indicou.
 
 
obrigado aos dois...
 
 
Luiz Tanure

mitchel monteiro

unread,
Jun 30, 2008, 10:16:32 PM6/30/08
to ph...@googlegroups.com
Depois poste mais informações pra gente do que (e de como) fez. Talvez ate uns exemplos de codigo.
Um dia pode ser necessario a outros manipular arquivos .doc tambem.

Mitchel Monteiro

. .

unread,
Jul 1, 2008, 10:07:20 AM7/1/08
to ph...@googlegroups.com
Peguei o tópico no final, falta de tempo para ler e-mail´s.
 
Fica a lição para todos, qualquer integração com aplicativos externos (Word, Excel, PDF, etc), o aplicativo deve estar instalado no servidor onde está rodando os script´s.
 
Espero ser mais ativo no grupo.
 
Abraços.


 
Em 30/06/08, mitchel monteiro <mitchel....@gmail.com> escreveu:

luiz tanure

unread,
Jul 1, 2008, 1:16:15 PM7/1/08
to ph...@googlegroups.com
finalmentes...
 
deu trabalho fazer isso, a extensão COM é ate bem documentada, mas os objetos e propriedades que posso acessar nos objetos é algo quase impossivel de ser achado... criar um documento novo ou edita-lo é facil, com varios exemplos... mas pegar o conteudo e jogar numa string que foi dificil achar algum material
 
o que fiz foi abrir o "Visual Basic Script Editor" do MS WORD ( abrir WORD > ALT+F11 > F2), ali achei ums lista dos metodos disponiveis em documentos WORD, que poderia acessar via COM
 
duas soluções me atendiam:
- salvar o documento como .txt
- pegar o conteudo (essa eu acabei de achar... por isso o esse texto estra estranho... era o que eu queria dede o inicio, mas coloco a outra opção tb)
 
seguem as soluções
 
pegar o conteudo numa string:
 
$word = new COM("word.application") or die ("Could not initialise MS Word object.");
$word->Documents->Open(realpath("documento.doc"));
// Extrai o conteudo
$conteudo = (string) $word->ActiveDocument->Content;
echo $conteudo;
$word->ActiveDocument->Close(false);
$word->Quit();
$word = null;
unset($word);
 
salvar como txt
 
$arquivo = realpath("documento.doc");
$word = new COM("word.application") or die("Não foi possível iniciar o MS Word");
$word->Documents->Open($arquivo);
$novo_arquivo = substr($arquivo,0,-4) . ".txt";
// o parametro '2' especifica salvar no formato txt
$word->Documents[1]->SaveAs($novo_arquivo,2);
$word->Documents[1]->Close(false);
$word->Quit();
$word->Release();
$word = NULL;
unset($word);
$fh = fopen($novo_arquivo, 'r');
$contenteudo = fread($fh, filesize($novo_arquivo));
fclose($fh);
unlink($novo_arquivo);
 
 
acho que é isso... estou tendo alguns problemas ainda mas ja resolveu esse caso
 
 
 e para que tem servidor linux
 
 
 
Luiz Tanure
 
Reply all
Reply to author
Forward
0 new messages