我正在尝试将 .doc 文件读入数据库,以便可以索引它的内容。Linux 上的 PHP 是否有一种简单的方法来读取 .doc 文件?如果做不到这一点,是否可以将 .doc 文件转换为 rtf、pdf 或其他一些易于阅读的“开放”格式?
请注意,我对 .docx 文件不感兴趣。
Conor,我建议查看 OpenOffice 命令行界面/调用宏。它可以将许多文件格式转换为许多其他格式。然后你可以选择比 MS doc 更容易解析的东西。
例如,要转换为 PDF,命令行是:
/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 创建的模板文件中!
请参阅项目网站:
我在 Ubuntu 中找到了一个 unoconv 包。它在 OpenOffice 支持的所有格式之间进行转换。您应该能够在 php 中使用 exec 来运行此实用程序。
它不是 PHP,但有一个 doc2rtf 实用程序可供您使用。从那里您可以将 RTF 文件作为文本文档打开,编写一些字符串替换例程来删除 RTF 格式代码,并拥有一个适合索引的文本。
或者,您可以获取 OpenOffice 并打开 MS Word 文档,然后只需文件 > 另存为 > RTF。
DOC 文件以二进制格式存储,没有任何纯 php 编写的类来处理它们。
RTF 文件更容易解析,主要是文本,您可以使用 fopen 打开它们并阅读内容。
如果可以的话,我建议使用 RTF,因为目前还没有针对 DOC 文件的合理解决方案。
经过几天的搜索,这是我最好的解决方案: 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);