使PHP在Linux上读取.doc文件
我正在尝试将.doc文件读入数据库,以便可以对其内容编制索引。 Linux上的PHP是否有一种简单的方法来读取.doc文件?是否无法将.doc文件转换为rtf,pdf或者其他易于阅读的"开放"格式?
注意,我对.docx文件不感兴趣。
解决方案
Microsoft不久前发布了.DOC格式的规范。
我们可以使用反词或者AbiWord提取文本并将其提供给我们喜欢的全文索引器。 AbiWord可能会更有效地实现目的,因为它可以转换为RTF,PDF和其他格式(是的,它是GUI文字处理器,但它也支持命令行用法)。
它不是PHP,但是有一个doc2rtf实用程序可以使用。在这里,我们可以将RTF文件作为文本文档打开,编写一些字符串替换例程以删除RTF格式代码,并获得适合索引的文本。
或者,我们可以获取OpenOffice并打开MS Word文档,然后打开"文件">"另存为">" RTF"。
似乎有一个用于访问Word文档的库,但不确定如何从PHP访问它。我认为最好的解决方案是从PHP调用wv命令。
DOC文件以二进制格式存储,没有纯PHP编写的类来处理它们。
RTF文件更容易解析,因为大多数文本都是文本,我们可以使用fopen打开它们并阅读内容。
如果可以的话,我建议我们使用RTF,因为对于DOC文件确实还没有完善的解决方案。
康纳,我建议看一下OpenOffice命令行界面/调用宏。它可以将许多文件格式转换为许多其他格式。然后,我们可以选择比MS doc更可解析的内容。
例如,要转换为PDF,请使用以下命令行:
/usr/lib/ooo-2.0/program/soffice.bin -norestore -nofirststart -nologo -headless -invisible "macro:///Standard.Module1.SaveAsPDF(demo.doc)"
phpLiveDocx是一个Zend Framework组件,可以在Linux,Windows和Mac上的PHP中读写DOC和RTF文件。此外,我们可以使用它来生成PDF文件,甚至可以将PHP中的数据合并到使用MS Word或者Open Office创建的模板文件中!
请参阅项目网站:
http://www.phplivedocx.org
我在Ubuntu中找到了unoconv软件包。它会在OpenOffice支持的所有格式之间进行转换。我们应该能够在php中使用exec来运行该实用程序。