Intereting Posts
FQL Graph API: Общие друзья Могу ли я использовать iconv для преобразования многобайтовых интеллектуальных котировок в расширенные интеллектуальные кавычки ASCII? Ключевое слово LIMIT в MySQL с подготовленным оператором Symfony 2 – Попытка вызвать функцию «apcu_fetch» ​​из пространства имен «Doctrine \ Common \ Cache» Шаблоны проектирования. Как создать объект базы данных / соединение только при необходимости? Разница между циклами Как проверить, существует ли почтовый адрес без отправки электронной почты? Интеграция WordPress Post с Cakephp3 PHP json_decode – иметь дело с пространствами имен Массовая рассылка PHPMailer с использованием BCC и улавливание неуспешных адресов электронной почты Сохранение корзины покупок: $ _SESSION или cookie браузера? Лучшая практика для организации повторных запросов DBAL в Symfony2? DOM pdf codeigniter: Ошибка класса 'DOMPDF' как создать base64encoded строку из ресурса изображения MySql создает или обновляет строку с помощью ip?

Может ли PHP читать текст из файла PowerPoint?

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

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

Любые идеи о том, что попробовать?

Благодаря –

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

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

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

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

    Вот примерная функция, которую я создал, аналогичную, которая извлекает текст из документов 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; } 

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

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

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

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

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

    Благодарю.