Может ли PHP читать текст из файла PowerPoint? - PullRequest
2 голосов
/ 14 марта 2009

Я хочу, чтобы PHP читал (загруженную) презентацию PowerPoint и минимально извлекал текст из каждого слайда (захват большего количества информации, такой как изображения и макеты, был бы даже лучше, но на этом я остановился бы только на тексте).

Я знаю, что приложения Google делают это в своем приложении для презентаций, поэтому я предполагаю, что есть какой-то способ перевести двоичный файл powerpoint, но я не могу найти информацию о том, как это сделать.

Есть идеи, что попробовать?

Спасибо -

Ответы [ 4 ]

3 голосов
/ 15 марта 2009

В зависимости от версии вы можете взглянуть на Zend Framework, поскольку Zend_Search_Lucene может индексировать файлы PowerPoint 2007. Просто посмотрите на соответствующий файл класса, я думаю, что-то вроде Zend_Search_Lucene_Document_Pptx.

1 голос
/ 19 мая 2010

Вот пример функции, которую я создал из аналогичной , которая извлекает текст из документов Word. Я протестировал его с файлами Microsoft PowerPoint, но он не декодирует файлы OpenOfficeImpress, сохраненные как .ppt

Для файлов .pptx вы можете взглянуть на Zend Lucene.

    function parsePPT($filename) {
    // This approach uses detection of the string "chr(0f).Hex_value.chr(0x00).chr(0x00).chr(0x00)" to find text strings, which are then terminated by another NUL chr(0x00). [1] Get text between delimiters [2] 
    $fileHandle = fopen($filename, "r");
    $line = @fread($fileHandle, filesize($filename));
    $lines = explode(chr(0x0f),$line);
    $outtext = '';

    foreach($lines as $thisline) {
        if (strpos($thisline, chr(0x00).chr(0x00).chr(0x00)) == 1) {
            $text_line = substr($thisline, 4);
            $end_pos   = strpos($text_line, chr(0x00));
            $text_line = substr($text_line, 0, $end_pos);
            $text_line = preg_replace("/[^a-zA-Z0-9\s\,\.\-\n\r\t@\/\_\(\)]/","",$text_line);
            if (strlen($text_line) > 1) {
                $outtext.= substr($text_line, 0, $end_pos)."\n";
            }
        }
    }
    return $outtext;
}
1 голос
/ 14 марта 2009

Да, конечно, это возможно.

[Вот начало.] (http://download.microsoft.com/download/0/B/E/0BE8BDD7-E5E8-422A-ABFD-4342ED7AD886/PowerPoint97-2007BinaryFileFormat(ppt)Specification.pdf) Я бы не сказал, что оно очень хорошо задокументировано / отформатировано, но это не так сложно, как только вы начнете. Начните с того, что сосредоточитесь только на нужных элементах (слайды, текст и т. д.).

Менее подробным и более простым подходом было бы открыть файл .ppt в шестнадцатеричном редакторе и найти информацию, в которой вы заинтересованы (вы должны видеть текст в двоичных данных), и то, что его окружает. Затем, основываясь на том, что окружает эту информацию, вы можете написать парсер, который извлекает эту информацию.

0 голосов
/ 04 апреля 2009

Я хотел опубликовать свое разрешение на этом.

К сожалению, мне не удалось заставить PHP надежно читать двоичные данные.

Моим решением было написать небольшое приложение для vb6, которое выполняет работу за счет автоматизации PowerPoint.

Не то, что я искал, но сейчас решает проблему.

При этом вариант Zend выглядит так, как будто он может быть жизнеспособным в какой-то момент, поэтому я буду наблюдать за ним.

Спасибо.

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