Corsi on-line

Leggere file PDF e DOC con PHP

Facendo una ricerchina in Rete per trovare una rapida soluzione ai problemi di un cliente, mi sono imbattuto in un interessante articolo sul blog di David Walsh dal titolo “Read PDF and Word DOC Files Using PHP”. In questo post, l’autore illustra la tecnica per estrarre il contenuto dai file PDF e DOC (il formato di Microsoft Word) mediante uno script PHP (eseguito in ambiente Linux).

Una simile attività risulta utile, ad esempio, se si ha la necessità di indicizzare automaticamente una serie di file di questo tipo consentendone la ricerca attraverso una pagina PHP. In questo caso, infatti, dovremo realizzare un spider PHP in grado di estrarre il contenuto (testuale) dai file PDF e DOC scansionati per poterli indicizzare correttamente. Vediamo come procedere:

1) Estrarre il contenuto da file PDF
Per poter effettuare questa operazione è necessario installare il pacchetto XPDF che include, al suo interno, diversi componenti tra cui “pdftotext”. Una volta installato il pacchetto potremo eseguire il seguente codce PHP:

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

2) Estrarre il contenuto da file DOC
Anche in questo caso è necessario scaricare un pacchetto. Si tratta di Antiword, un reader gratuito (per sistemi Linux) per i file generati da MS Word. Una volta installato potremo procedere similmente a quanto visto per i file PDF:

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

Si noti che la libreria in questione funziona unicamente coi file “.doc” e non con quelli “.docx” generati dalle versioni più recenti dell’editor di testo della suite per l’ufficio di casa Microsoft.

Post correlati
  • Jacopo Negro Cusa

    Salve,
    Ho installato correttamente xpdf.
    Se dal terminal faccio eseguire il comando
    “pdftotext -’”
    mi stampa a schermo tutto perfettamente.
    Il problema è che quando provo a farlo girare da php con il comando
    “shell_exec(‘pdftotext ‘.$filename.’ -’);”
    il risultato è una stringa completamente vuota!!
    Qualcuno ha un’idea di cosa può essere sbagliato per favore?
    ringrazio in anticipo.

    Jacopo

I più letti del mese
Tematiche