关于数据库:在Linux上获取PHP以读取.doc文件

关于数据库:在Linux上获取PHP以读取.doc文件

Getting PHP to read .doc files on Linux

我正在尝试将.doc文件读入数据库,以便可以为其内容编制索引。 Linux上的PHP是否有一种简单的方法来读取.doc文件? 是否无法将.doc文件转换为rtf,pdf或其他易于阅读的"开放"格式?

注意,我对.docx文件不感兴趣。


康纳,我建议您看一下OpenOffice命令行界面/调用宏。它可以将许多文件格式转换为许多其他格式。然后,您可以选择比MS doc更可解析的内容。

例如,要转换为PDF,请使用以下命令行:

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

似乎有一个用于访问Word文档的库,但不确定如何从PHP访问它。我认为最好的解决方案是从PHP调用其wv命令。


phpLiveDocx是一个Zend Framework组件,可以在Linux,Windows和Mac上的PHP中读写DOC和RTF文件。此外,您可以使用它来生成PDF文件,甚至可以将PHP中的数据合并到使用MS Word或Open Office创建的模板文件中!

请参阅项目网站:

http://www.phplivedocx.org


我在Ubuntu中找到了unoconv软件包。它会在OpenOffice支持的所有格式之间进行转换。您应该能够在php中使用exec来运行该实用程序。


您可以使用反词或AbiWord提取文本并将其提供给您喜欢的全文索引器。 AbiWord可能会更有效地实现您的目的,因为它可以转换为RTF,PDF和其他格式(是的,它是GUI文字处理器,但它也支持命令行用法)。


经过几天的搜索,这是我最好的解决方案:
http://wvware.sourceforge.net/

安装套件

1
sudo apt-get install wv

在PHP中使用它:

1
2
3
4
5
6
7
8
9
$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);

DOC文件以二进制格式存储,没有任何纯php编写的类来处理它们。

RTF文件更容易解析,因为大多数文本都是文本,您可以使用fopen打开它们并阅读内容。

如果可以的话,我建议您使用RTF,因为对于DOC文件确实还没有完善的解决方案。


它不是PHP,但是有一个doc2rtf实用程序可以使用。在这里,您可以将RTF文件作为文本文档打开,编写一些字符串替换例程以删除RTF格式代码,并获得适合索引的文本。

或者,您可以获取OpenOffice并打开MS Word文档,然后打开"文件">"另存为">" RTF"。


推荐阅读