Artigos & Ideias

Ler PDF e Documentos Word com PHP

Escrito por:

Um dos trabalhos que já fiz para um cliente, envolvia manipulação de muitos documentos Word e PDF no site.
Eram documentos importantes dos serviços online desse cliente, não é como se fossem um amontoado de lixo de ficheiros no servidor. O objectivo do trabalho era que o motor de pesquisa do seu site (Sphider) lesse esses ficheiros PDF e DOC, para que os seus clientes pudessem chegar aos documentos que precisavam, sem que para isso tivessem de andar à procura deles através de inúmeras páginas.
Fui bem sucedido no que toca à realização do objectivo do cliente, e vou agora explicar como ler PDF’s e DOC’s utilizando PHP.

Ler Ficheiros PDF

Para que seja possível a leitura de PDF’s, primeiramente precisas de instalar o xpdf package, que inclui “pdftotext.” Depois de termos xpdf/pdftotext instalado, executamos a seguinte instrução PHP para obter o texto do PDF:

$content = shell_exec('/usr/local/bin/pdftotext '.$filename.' -');

Ler Ficheiros Word (.doc)

Ainda como o exemplo acima dos PDF’s, precisas de instalar outro pacote. Pacote esse denominado Antiword.
Esta é a linha que obtém o conteúdo do Documento Word:

$content = shell_exec('/usr/local/bin/antiword '.$filename);

De frisar que o código acima não lê ficheiros .DOCX (Office 2007) e não (propositadamente) preserva o formato.
Existem outras bibliotecas que preservam a formatação, mas no meu caso, o objectivo era so mesmo obter o texto.

22


Sobre o Autor

Carlos Gonçalves é um Freelancer com bastante experiência em linguagens de programação e webdesign. Vocacionado para as novas tecnologias, aposta na qualidade dos serviços, atendimento rápido e sempre disponível para melhor satisfazer os seus clientes. Autor do site cgoncalves.com

Comentários

  1. Joseph Dionisio Biesek Rocco  8 Julho 2009

    Amigo, você instalou o pacote xpdf no linux e em um servidor pago da internet? isso foi feito via SSH?

    muito importante esse esclarecimento.

    (responder)
  2. Carlos Gonçalves  8 Julho 2009

    Vivas Joseph

    Sim, o xpdf foi instalado em linux, via SSH num servidor pago, mas era dedicado.
    Foi na http://www.nfsi.pt

    (responder)
  3. Adérito  3 Setembro 2009

    Alo!

    Estou desenvolvendo uma aplicação WEB wm PHP na qual preciso fazer a pesquisa de palavras em ficheiros pdf e doc. Gostava de saber se existe alguma forma de poder usar o metodo shell_exec, no ambiente Windows onde o servidor é o wamp. Ja tentei varias formas de leitura de ficheiros mas não funciona para pdf e word, no maximo da problemas de caracteres.

    Aguardo anciosamente por seu comentário.

    Obrigado

    (responder)
  4. Carlos Gonçalves  4 Setembro 2009

    Olá Adérito

    Experimentar dar um olhinho aqui: http://meta.wikimedia.org/wiki/PDF_doc_search e/ou na parte II a ver se soluciona as tuas dúvidas. Se não, envia-me um e-mail com os erros que dá, ou como estás a tentar solucionar.

    (responder)
  5. João  26 Maio 2010

    Olá,

    De que forma posso converter os PDF sem perder a formatação?

    Obrigado.
    João Manuel

    (responder)
  6. Carlos Gonçalves  26 Maio 2010

    @João: antes de mais bem vindo ao meu site :)

    Relativamente à sua questão, pelo que percebi pretende converter um PDF para Word sem perder a formatação, é isso?

    Mas pretende fazer como, online ou offline?
    Se for offline existem inúmeros conversores, é só procurar no google por “Convert PDF to Word”, e escolher um. Há uns melhores que outros, mas como não uso nenhum em particular.

    Se for online, depende de como o sistema estiver implementado, se for este o caso entre em Contacto comigo.

    (responder)
  7. Jean Rafael Tardem Delefrati  20 Agosto 2010

    Olá,

    Muito obrigado por partilhar! Me ajudou muito!

    Abraço!

    (responder)
  8. Wildson Santos  2 Setembro 2010

    Olá,

    Precisso de ajuda de vocês alguem pode mim ajudar a converter um PDF em HTML usando o PHP?

    (responder)
  9. Adailton  13 Outubro 2010

    Perfeito…nao conhecia antiword. Instalei, inclui em minhas classe e ate funcionou, se não fosse pelo problema de ele so resgatar a ultima linha do DOC.

    Saberia me dizer porque? Teria alguma literatura aonde eu poderia ver os comandos da antiword.

    Desde ja agradeço…VAleu

    (responder)
    • Carlos Gonçalves  13 Outubro 2010

      Experimenta fazer isoladamente, i.e, criar à parte do teu código, a obtenção do conteúdo. Poderá ser algum conflito com o código que faz chamar a função.

      Não conheço documentação do antiword.

      (responder)
  10. Rick  23 Novembro 2010

    Olá Carlos. Parabéns pelo seu texto. Cara, você conhece alguma biblioteca que mantém a formatação do texto lido em .doc? Eu quero construir um sistema que vai ler e apenas expor as páginas de alguns arquivos .doc no web browser dos clientes, mas é essencial que a formatação original seja preservada. Obrigado pela dica. Rick

    (responder)
    • Carlos Gonçalves  23 Novembro 2010

      Olá Rick,

      Não me recordo (já foi há algum tempo) se o antiword tem alguma forma de preservar a formatação, ou se existe alguma versão mais recente que permita.

      No entanto, experimenta dar uma olhada AQUI

      (responder)
  11. marcelo  31 Agosto 2011

    Olá Carlos, sou novato nesse mundo php, e gostaria de saber se voce poderia me passar alguma inforção mais detalhada sobre como fazer a conversão, sei que é pedir muito mais se voce pudesse me mostrar um exemplo basico…grato…

    (responder)
    • Carlos Gonçalves  3 Setembro 2011

      Olá Marcelo, desculpa mas não posso! Posso esclarecer dúvidas caso as tenhas, mas podes sempre experimentar utilizar comunidades como por exemplo o Portugal-a-programar para uma maior aprendizagem.

      (responder)
  12. marcelo  3 Setembro 2011

    Obrigada, por responder e so de poder conta com sua ajuda ja esta falendo!

    (responder)
  13. Fernando  4 Novembro 2011

    Carlos, parabéns pelo Post, me ajudou muito

    (responder)
  14. Cristian Liebl  16 Dezembro 2011

    Carlos, muito bom, procurei por isso um tempão, usei a versão pra windows, e funcionou perfeitamente, obrigado.

    (responder)

Comentar

Nota: A moderação de comentários está activada e pode atrasar o teu comentário. Não há necessidade de reenviares o teu comentário.

More in Outros (1 of 12 articles)

# #