Intereting Posts

Получение PHP для чтения .doc-файлов в Linux

Я пытаюсь прочитать файл .doc в базе данных, чтобы я мог индексировать его содержимое. Есть ли простой способ для PHP на Linux читать файлы .doc? В противном случае возможно преобразовать файлы .doc в rtf, pdf или какой-нибудь другой «открытый» формат, который легко читать?

Заметьте, меня не интересуют файлы .docx.

Solutions Collecting From Web of "Получение PHP для чтения .doc-файлов в Linux"

Кажется, есть библиотека для доступа к документам Word, но не уверен, как получить к ней доступ с PHP. Я думаю, что лучшим решением было бы называть их команду wv с PHP.

Конор, я бы предложил посмотреть интерфейс командной строки 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 и может читать и записывать файлы DOC и RTF в PHP на Linux, Windows и Mac. Кроме того, вы можете использовать его для создания PDF-файлов и даже объединить данные из PHP в файлы шаблонов, созданные с помощью MS Word или Open Office!

См. Веб-сайт проекта по адресу:

http://www.phplivedocx.org

Вы можете использовать antiword или AbiWord, чтобы вытащить текст и передать его вашему любимому полнотекстовому индексу. AbiWord, вероятно, более эффективен для ваших целей, потому что он может конвертировать в RTF, PDF и другие форматы (да, это текстовый процессор GUI, но он также поддерживает использование командной строки).

Я нашел пакет Unoconv в Ubuntu. Это конверсия между всеми форматами, поддерживаемыми OpenOffice. Вы можете использовать exec в php для запуска этой утилиты.

Недавно Microsoft опубликовала спецификацию формата .DOC .

Это не PHP, но есть утилита doc2rtf, которую вы можете использовать. Оттуда вы можете просто открыть RTF-файл в виде текстового документа, написать некоторые строковые процедуры замены, чтобы удалить коды форматирования RTF и получить глобус текста, подходящий для индексирования.

В качестве альтернативы вы можете получить OpenOffice и открыть документы MS Word и просто File> Save As> RTF.

Файлы DOC хранятся в двоичном формате, в котором не было каких-либо чисто написанных PHP-классов.

Файлы RTF намного проще разбирать, будучи в основном текстом, вы можете просто открыть их с помощью fopen и прочитать содержимое.

Я бы предложил использовать RTF, если это возможно, поскольку на самом деле для DOC-файлов действительно нет звукового решения.

Вы можете проверить исходный код этой статьи: Чтение «чистого» текста из DOCX и ODT

После нескольких дней поиска, вот мое лучшее решение: 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);