Pergunta

Eu quero ter PHP ler um (upload) apresentação powerpoint, e minimamente extrair o texto de cada slide (agarrando mais informações, como imagens e layouts seria ainda melhor, mas eu gostaria de se contentar com apenas o texto neste ponto).

Eu sei que aplicativos Google faz isso em seu aplicativo de apresentação, então eu estou supondo que há alguma maneira de traduzir o binário powerpoint, mas eu não consigo encontrar qualquer informação sobre como fazê-lo.

Algumas ideias sobre o que tentar?

Graças -

Foi útil?

Solução 4

Eu queria postar minha solução para este.

Infelizmente, eu era incapaz de obter PHP para ler de forma confiável os dados binários.

Minha solução foi a escrever um aplicativo vb6 pequena que faz o trabalho, automatizando PowerPoint.

Não o que eu estava procurando, mas, resolve o problema para agora.

Dito isto, a opção Zend parece que pode ser viável em algum momento, por isso vou assistir isso.

Graças.

Outras dicas

Dependendo da versão, você pode dar uma olhada no Zend Framework como Zend_Search_Lucene é capaz de indexar PowerPoint 2007 arquivos. Basta dar uma olhada no arquivo de classe correspondente, eu acho que é algo como Zend_Search_Lucene_Document_Pptx.

Sim, claro que é possível.

[Aqui é um começo.] ( http://download.microsoft.com/download/0/B/E/0BE8BDD7-E5E8-422A-ABFD-4342ED7AD886/PowerPoint97-2007BinaryFileFormat (ppt) Specification.pdf) Eu não diria que é muito bem documentado / formatado, mas não é tão difícil uma vez que você começar. Comece concentrando-se apenas em elementos que você precisa (slides, texto, etc).

A menos detalhado e uma abordagem mais simples seria a de arquivo .ppt aberto no editor hexadecimal e olhar para a informação que você está interesed (você deve ser capaz de ver o texto dentro os dados binários) eo que o rodeia. Em seguida, com base no que o rodeia que a informação que você poderia escrever um analisador que extrai essas informações.

Aqui está uma função de exemplo que eu criei formar um semelhante um que os extratos de texto a partir de documentos do Word. Eu testei com arquivos do Microsoft PowerPoint, mas não irá decodificar OpenOfficeImpress arquivos salvos como .ppt

Para arquivos .pptx você pode querer dar uma olhada em 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;
}
Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top