Autor Tópico: [PHP] Ler PDF's, Word e Excel com PHP  (Lida 3351 vezes)

Offline cgoncalves

  • Boolean User
  • **
  • Mensagens: 123
  • O topo não anseio, mas ambiciono lá chegar
    • Carlos Gonçalves
[PHP] Ler PDF's, Word e Excel com PHP
« em: 29 de Janeiro de 2009, 14:20 »
Uns tempos atrás precisei de ler o texto em PDF's e .DOC's (Word), esta foi a solução que achei e resolvi partilhar.

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 instrucçã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.

Ler Ficheiros Excel (.xls)

Quanto ao do excel, e bem como os exemplos anteriores, será necessário recorrermos a uma classe, classe essa: phpExcelReader

Depois o código para ler é algo como:

require_once 'Excel/reader.php';

$reader = new Spreadsheet_Excel_Reader();
$reader->setOutputEncoding("UTF-8");

$reader->read("test.xls");

for ($i = 1; $i <= $reader->sheets[0]["numRows"]; $i++)
{
for ($j = 1; $j <= $reader->sheets[0]["numCols"]; $j++)
{
print "\"".$reader->sheets[0]["cells"][$i][$j]."\",";
}
echo "\n";
}


Se bem que a leitura do excel é um pouco mais complexa, dá mais trabalho que os outros dois.

Uma outra solução para o Excel e questões de performance aparte, esta é uma solução simples, basta trocar o PDO por um classe de leitura do excel e adaptar-mos. Considerando que tornamos a aplicação apenas para leitura.

Fica aqui o link OLEREAD para fazerem o download.

Para iniciar a leitura do excel fazemos:

< ?
include 'oleread.php' ;
$file = "ficheiro.xls" ;
$data = new Spreadsheet_Excel_Reader();
$data->setOutputEncoding('CP1251');
$data->read($file);
?>

Com isto, a estrutura da folha XLS será carregada no Objecto $data. Para acedermos a uma folha precisamos aceder à propriedade “sheets”, um array com todas as folhas do ficheiro (cada “aba” na parte de baixo do excel) pelo número da ordem em que se encontram começando do 0. Exemplo de como obtemos a primeira folha do ficheiro excel:

< ? $first = $data->sheets[0] ; ?>

Ou podemos ainda percorrer todas as folhas:

< ? foreach($data->sheets as $sheet) { // código aqui } ?>

Cada folha (sheet) possui uma propriedade chamada ‘cells’, que é um array multidimensional com todas as células da folha, até aonde foi preenchida. O primeiro índice do array é a linha, o segundo a coluna. Eis um exemplo:

< ? $cells = $data->sheets[0]['cells'] ;
echo "nTitulo da Folha (linha 1, coluna A):". $cells[1][1] ;
echo "nSubtitulo (linha 2, coluna C):".$cells[2][3] ;
?>


Qualquer dúvida apitem.


PS: Aproveito e passo a publicidade  :P, ambas as informações podem ser encontradas no meu website.
« Última modificação: 03 de Fevereiro de 2009, 08:44 por cgoncalves »

_________________________________

"Great coders aren't born. They're compiled and released"
"Expert coders do not need a keyboard. They just throw magnets at the RAM

Offline elcsat

  • Try-Catch User
  • ***
  • Mensagens: 450
Re: [Tutorial] Ler PDF's e DOC's com PHP
« Responder #1 em: 29 de Janeiro de 2009, 23:36 »
desculpa mas os links que colocaste em cima aponta para paginas que nao existem, seria que os podias disponibilizar, para quem quisar sacar, eu ate gostava de testar isso:)

Offline djthyrax

  • kicks Chuck Norris' ass!
  • Moderador Local
  • Stack Overflow
  • ******
  • Mensagens: 14403
Re: [Tutorial] Ler PDF's e DOC's com PHP
« Responder #2 em: 30 de Janeiro de 2009, 00:38 »
Agora já funcionam, ele usou mal a tag [ url].

Não peças ajuda por PM! A tua dúvida vai ter menos atenção do que se for postada na secção correcta do fórum!

Offline cgoncalves

  • Boolean User
  • **
  • Mensagens: 123
  • O topo não anseio, mas ambiciono lá chegar
    • Carlos Gonçalves
Re: [PHP] Ler PDF's e DOC's com PHP
« Responder #3 em: 30 de Janeiro de 2009, 06:52 »
Agora já funcionam, ele usou mal a tag [ url].

Thanks, usei na tag as " " ... já é força de hábito lool

EDIT: Actualizado, informação adicional
« Última modificação: 30 de Janeiro de 2009, 06:55 por Devil_Boy »

_________________________________

"Great coders aren't born. They're compiled and released"
"Expert coders do not need a keyboard. They just throw magnets at the RAM

Offline elcsat

  • Try-Catch User
  • ***
  • Mensagens: 450
Re: [PHP] Ler PDF's e DOC's com PHP
« Responder #4 em: 30 de Janeiro de 2009, 12:34 »

obrigada, ja vou sacar para testar. :thumbsup: :thumbsup: :thumbsup: :P :biggrin:

Offline cgoncalves

  • Boolean User
  • **
  • Mensagens: 123
  • O topo não anseio, mas ambiciono lá chegar
    • Carlos Gonçalves
Re: [PHP] Ler PDF's e DOC's com PHP
« Responder #5 em: 30 de Janeiro de 2009, 14:44 »
obrigada, ja vou sacar para testar. :thumbsup: :thumbsup: :thumbsup: :P :biggrin:

Força, depois dá um feedback =)
Alguma dúvida apita

_________________________________

"Great coders aren't born. They're compiled and released"
"Expert coders do not need a keyboard. They just throw magnets at the RAM

Offline elcsat

  • Try-Catch User
  • ***
  • Mensagens: 450
Re: [PHP] Ler PDF's e DOC's com PHP
« Responder #6 em: 02 de Fevereiro de 2009, 00:13 »
do pdf nao conseguir so o antiword que e para usar o word, e excel ja agora tens alguma coisa pra passar as tabelas de excel:), e podes fornecer o link para sacar o do pdf, desde ja brigada

Offline cgoncalves

  • Boolean User
  • **
  • Mensagens: 123
  • O topo não anseio, mas ambiciono lá chegar
    • Carlos Gonçalves
Re: [PHP] Ler PDF's e DOC's com PHP
« Responder #7 em: 02 de Fevereiro de 2009, 07:35 »
do pdf nao conseguir so o antiword que e para usar o word, e excel ja agora tens alguma coisa pra passar as tabelas de excel:), e podes fornecer o link para sacar o do pdf, desde ja brigada

Quanto ao link do PDF está no primeiro post, mas o link é: http://www.foolabs.com/xpdf/download.html

Quanto ao do excel, por acaso, ainda ontem um user fez-me a mesma pergunta sobre, se bem que foi noutro fórum.

Vou fazer copiar a mesma resposta:

Citação de: cgoncalves
Usa a classe phpExcelReader:

Depois o código para ler é algo como:

require_once 'Excel/reader.php';

$reader = new Spreadsheet_Excel_Reader();
$reader->setOutputEncoding("UTF-8");

$reader->read("test.xls");

for ($i = 1; $i <= $reader->sheets[0]["numRows"]; $i++)
{
   for ($j = 1; $j <= $reader->sheets[0]["numCols"]; $j++)
   {
      print "\"".$reader->sheets[0]["cells"][$i][$j]."\",";
   }
   echo "\n";
}

Se bem que a do excel é um pouco mais complexo, dá mais trabalho que esses dois.
Alguma dúvida apita.


******EDIT*******

Informação adicionada ao post inicial
« Última modificação: 16 de Dezembro de 2009, 07:50 por cgoncalves »

_________________________________

"Great coders aren't born. They're compiled and released"
"Expert coders do not need a keyboard. They just throw magnets at the RAM

Offline cgoncalves

  • Boolean User
  • **
  • Mensagens: 123
  • O topo não anseio, mas ambiciono lá chegar
    • Carlos Gonçalves
Re: [PHP] Ler PDF's, Word e Excel com PHP
« Responder #8 em: 03 de Fevereiro de 2009, 08:37 »
Coloquei no meu Blog nova informação de como ler o excel com php, já venho actualizar isto  :cheesygrin:


-----ACTUALIZADO-----
« Última modificação: 03 de Fevereiro de 2009, 08:47 por cgoncalves »

_________________________________

"Great coders aren't born. They're compiled and released"
"Expert coders do not need a keyboard. They just throw magnets at the RAM

Offline apoca

  • void
  • *
  • Mensagens: 14
    • www.miguelvieira.com.pt
Re: [PHP] Ler PDF's, Word e Excel com PHP
« Responder #9 em: 19 de Outubro de 2009, 18:38 »
Bom não me sabem dizer como posso fazer algo parecido!? Ou seja, os docs e xls estão no servidor eu autentico-me (isto tudo na web através de um site web), altero o doc por exemplo e volto a guardar e ele fica no servidor.... Não me sabem dizer como posso fazer algo do género.. Ou seja, sem o utilizador ter de fazer download pro pc alterar e voltar a fazer upload...
Tecnologias da Informação e Comunicação
Universidade de Trás-os-Montes e Alto Douro
Grupo Linux da UTAD
Analista/programador