2008-09-18 65 views
5

我試圖將一個.doc文件讀入數據庫,這樣我就可以爲它的內容建立索引。在Linux上有沒有簡單的方法來讀取.doc文件?如果不這樣做,是否有可能將.doc文件轉換爲rtf,pdf或其他易於閱讀的「開放」格式?讓PHP讀取Linux上的.doc文件

請注意,我對.docx文件不感興趣。

回答

3

似乎有一個library for accessing Word documents,但不知道如何從PHP訪問它。我認爲最好的解決方案是從PHP調用它們的wv command

+0

這似乎很理想。我需要在一些文檔上測試它,但到目前爲止,wvText函數似乎可以滿足我的需求。 – Conor 2008-09-18 06:10:19

1

您可以使用antiwordAbiWord來拉出文本並將其提供給您最喜愛的全文索引器。 AbiWord可能對您的目的更有效,因爲它可以轉換爲RTF,PDF和其他格式(是的,它是一個GUI文字處理器,但它也支持命令行使用)。

0

這不是PHP,但有一個doc2rtf實用工具,你可以使用。從那裏你可以打開RTF文件作爲文本文件,編寫一些字符串替換例程來刪除RTF格式代碼,並有一個適合索引的文本。

或者,您可以獲得OpenOffice並打開MS Word文檔,然後選擇文件>另存爲> RTF。

0

DOC文件以二進制格式存儲,其中沒有任何純粹的PHP編寫類處理它們。

RTF文件更容易解析,主要是文本,你可以打開它們打開並閱讀內容。

如果可以的話,我會建議使用RTF,因爲目前還沒有DOC文件的完善解決方案。

7

Conor,我建議看看OpenOffice命令行界面/調用宏。它可以將許多文件格式轉換爲許多文件格式。然後你可以選擇比MS doc更能解析的東西。

例如,轉換爲PDF格式,命令行是:

/usr/lib/ooo-2.0/program/soffice.bin -norestore -nofirststart -nologo -headless -invisible "macro:///Standard.Module1.SaveAsPDF(demo.doc)" 
+0

嘿,這是一個很好的提示:你有鏈接到其他宏的參考嗎? – nickf 2009-05-14 07:10:42

2

phpLiveDocx是一個Zend Framework組件,可在PHP運行在Linux,Windows和Mac讀寫DOC和RTF文件。此外,您可以使用它來生成PDF文件,甚至可以將PHP中的數據合併到使用MS Word或Open Office創建的模板文件中!

請參見該項目網站:

http://www.phplivedocx.org

1

我發現了一個unoconv軟件包在Ubuntu。它在OpenOffice支持的所有格式之間進行轉換。你應該可以在php中使用exec來運行這個工具。

0

後搜索的天,這裏是我最好的解決辦法: http://wvware.sourceforge.net/

安裝包

sudo apt-get install wv 

用它PHP:

$output = str_replace('.doc', '.txt', $filename); 
shell_exec('/usr/bin/wvText ' . $filename . ' ' . $output); 
$text = file_get_contents($output); 
# Convert to UTF-8 if needed 
if(!mb_detect_encoding($text, 'UTF-8', true)) 
{ 
    $text = utf8_encode($text); 
} 
unlink($output);