2009-09-14 79 views
2

pdftotext獲取PDF文件並將文本轉換爲.txt文件。將pdftotext的結果獲取到php變量中,而不是文本文件

我該如何去獲得pdftotext將結果發送到PHP變量而不是文本文件?

我假設我必須運行exec('pdftotext /path/file.pdf'),但是如何獲得結果?

+0

我的'pdftotext'命令沒有在'exec()'函數中運行。我錯過了在圖書館使用的任何東西嗎? – 2012-08-31 11:50:39

+0

@SumitMadan什麼都可以在exec()中爲你運行。如果沒有,那麼你的問題在那裏,如果其他人運行,然後檢查以確保安裝pdftotext ... – Jason 2012-08-31 12:46:26

+0

其他命令正在運行,並且安裝了pdftotext。 – 2012-09-01 04:01:02

回答

2

您需要捕獲標準輸出/標準錯誤:

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

對不起,但是......我應該使用第二個和第三個參數? 現在我有echo cmd_exec('/ usr/local/bin/pdftotext /users/jmr/downloads/test.pdf - ');返回1,但是當我通常運行相同的命令時,屏幕上會顯示PDF文本 – Jason 2009-09-14 15:38:13

+1

將第二個和第三個參數的變量用於捕獲輸入。 – cgp 2009-09-14 18:12:26

+0

謝謝,這個竅門 – Jason 2009-09-14 18:59:53

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

-將指示pdftotext返回結果,而不是到stdout到一個文件中。

相關問題