Получение PHP для чтения .doc файлов в Linux - PullRequest
5 голосов
/ 18 сентября 2008

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

Обратите внимание, меня не интересуют файлы .docx.

Ответы [ 10 ]

7 голосов
/ 18 сентября 2008

Конор, я бы посоветовал взглянуть на интерфейс командной строки OpenOffice / вызывающие макросы. Он может конвертировать многие форматы файлов во многие другие. Тогда вы можете выбрать что-то более понятное, чем MS Doc.

Например, для преобразования в PDF командная строка:

/usr/lib/ooo-2.0/program/soffice.bin -norestore -nofirststart -nologo -headless -invisible   "macro:///Standard.Module1.SaveAsPDF(demo.doc)"
3 голосов
/ 18 сентября 2008

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

2 голосов
/ 14 мая 2009

phpLiveDocx является компонентом Zend Framework и может читать и записывать файлы DOC и RTF на PHP на Linux, Windows и Mac. Кроме того, вы можете использовать его для генерации файлов PDF и даже объединения данных из PHP в файлы шаблонов, созданные с помощью MS Word или Open Office!

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

http://www.phplivedocx.org

1 голос
/ 24 декабря 2009

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

1 голос
/ 18 сентября 2008

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

0 голосов
/ 21 марта 2016

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

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

0 голосов
/ 18 сентября 2008

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

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

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

0 голосов
/ 18 сентября 2008

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

Кроме того, вы можете получить OpenOffice и открыть документы MS Word и просто Файл> Сохранить как> RTF.

0 голосов
/ 18 сентября 2008

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...