2009-09-14 10 views
2

pdftotext prend un fichier PDF et convertit le texte en fichier .txt.Obtention des résultats de pdftotext dans une variable php, pas un fichier texte

Comment est-ce que j'irais obtenir pdftotext pour envoyer le résultat à une variable PHP au lieu d'un fichier texte?

Je suppose que je dois exécuter exec('pdftotext /path/file.pdf'), mais comment puis-je obtenir le résultat?

+0

Mes 'pdftotext' command not en cours d'exécution dans la fonction' exec() '. Est-ce que je manque quelque chose qui a utilisé dans la bibliothèque? –

+0

@SumitMadan Tout fonctionne-t-il dans exec() pour vous? Si ce n'est pas le cas, votre problème est là, si d'autres fonctionnent, vérifiez que pdftotext est installé ... – Jason

+0

les autres commandes sont en cours d'exécution et pdftotext est installé. –

Répondre

2

Vous devez capturer stdout/stderr:

function cmd_exec($cmd, &$stdout, &$stderr) 
{ 
    $outfile = tempnam(".", "cmd"); 
    $errfile = tempnam(".", "cmd"); 
    $descriptorspec = array(
     0 => array("pipe", "r"), 
     1 => array("file", $outfile, "w"), 
     2 => array("file", $errfile, "w") 
    ); 
    $proc = proc_open($cmd, $descriptorspec, $pipes); 

    if (!is_resource($proc)) return 255; 

    fclose($pipes[0]); //Don't really want to give any input 

    $exit = proc_close($proc); 
    $stdout = file($outfile); 
    $stderr = file($errfile); 

    unlink($outfile); 
    unlink($errfile); 
    return $exit; 
} 
+0

Désolé d'être dense mais ... que devrais-je utiliser les 2ème et 3ème arguments? en ce moment j'ai cmd_exec echo ('/ usr/local/bin/pdftotext /users/jmr/downloads/test.pdf -'); qui renvoie 1 mais quand je cours la même commande normalement, je reçois le texte PDF à l'écran – Jason

+1

Utilisez les variables que vous voulez capturer l'entrée dans le deuxième et le troisième argument. Merci – cgp

+0

, qui a fait l'affaire – Jason

7
$result = shell_exec("pdftotext file.pdf -"); 

Le - ordonnera-pdftotext de retourner le résultat à stdout au lieu d'un fichier.