Pregunta

Quiero que PHP lea una presentación de PowerPoint (cargada) y extraiga mínimamente el texto de cada diapositiva (sería mejor obtener más información como imágenes y diseños, pero me conformaría con solo el texto en este punto).

Sé que las aplicaciones de Google lo hacen en su aplicación de presentación, así que supongo que hay alguna forma de traducir el binario de PowerPoint, pero parece que no puedo encontrar ninguna información sobre cómo hacerlo.

¿Alguna idea sobre qué probar?

Gracias -

¿Fue útil?

Solución 4

Quería publicar mi resolución sobre esto.

Desafortunadamente, no pude hacer que PHP lea de manera confiable los datos binarios.

Mi solución fue escribir una pequeña aplicación vb6 que haga el trabajo automatizando PowerPoint.

No es lo que estaba buscando, pero resuelve el problema por ahora.

Dicho esto, la opción Zend parece que puede ser viable en algún momento, así que lo veré.

Gracias.

Otros consejos

Dependiendo de la versión, puede echar un vistazo a Zend Framework ya que Zend_Search_Lucene puede indexar archivos de PowerPoint 2007. Solo eche un vistazo al archivo de clase correspondiente, creo que es algo así como Zend_Search_Lucene_Document_Pptx .

Sí, por supuesto, es posible.

[Aquí hay un comienzo.] ( http://download.microsoft.com/download/0/B/E/0BE8BDD7-E5E8-422A-ABFD-4342ED7AD886/PowerPoint97-2007BinaryFileFormat (ppt) Specification.pdf) No diría que está muy bien documentado / formateado, pero no es tan difícil una vez que comienzas. Comience centrándose solo en los elementos que necesita (diapositivas, texto, etc.).

Un enfoque menos detallado y más simple sería abrir el archivo .ppt en el editor hexadecimal y buscar la información que le interesa (debería poder ver el texto dentro de los datos binarios) y lo que lo rodea. Luego, según lo que rodea esa información, podría escribir un analizador que extraiga esta información.

Aquí hay una función de muestra que creé de un similar uno que extrae texto de documentos de Word. Lo probé con archivos de Microsoft PowerPoint, pero no decodificará los archivos de OpenOfficeImpress guardados como .ppt

Para archivos .pptx es posible que desee echar un vistazo a 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 bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top