Domanda

Voglio che PHP legga una presentazione (caricata) in powerpoint ed estragga minimamente il testo da ogni diapositiva (catturare più informazioni come immagini e layout sarebbe anche meglio, ma mi accontenterei solo del testo a questo punto).

So che le app di Google lo fanno nella sua app di presentazione, quindi immagino che ci sia un modo per tradurre il binario di powerpoint, ma non riesco a trovare alcuna informazione su come farlo.

Qualche idea su cosa provare?

Grazie -

È stato utile?

Soluzione 4

Volevo pubblicare la mia risoluzione su questo.

Sfortunatamente, non sono riuscito a far leggere in modo affidabile i dati binari a PHP.

La mia soluzione era quella di scrivere una piccola app vb6 che fa il lavoro automatizzando PowerPoint.

Non quello che stavo cercando, ma per ora risolve il problema.

Detto questo, l'opzione Zend sembra che possa essere praticabile ad un certo punto, quindi lo guarderò.

Grazie.

Altri suggerimenti

A seconda della versione, puoi dare un'occhiata a Zend Framework poiché Zend_Search_Lucene è in grado di indicizzare i file di PowerPoint 2007. Dai un'occhiata al file di classe corrispondente, penso che sia qualcosa come Zend_Search_Lucene_Document_Pptx .

Sì, certo, è possibile.

[Ecco un inizio.] ( http://download.microsoft.com/download/0/B/E/0BE8BDD7-E5E8-422A-ABFD-4342ED7AD886/PowerPoint97-2007BinaryFileFormat (ppt) Specification.pdf) Non direi che è ben documentato / formulato, ma non è così difficile una volta iniziato. Inizia concentrandoti solo sugli elementi di cui hai bisogno (diapositive, testo, ecc.).

Un approccio meno dettagliato e più semplice sarebbe quello di aprire il file .ppt nell'editor esadecimale e cercare le informazioni in cui sei interessato (dovresti essere in grado di vedere il testo all'interno dei dati binari) e cosa lo circonda. Quindi, in base a ciò che circonda tali informazioni, è possibile scrivere un parser che estrae tali informazioni.

Ecco una funzione di esempio che ho creato da un simile uno che estrae il testo dai documenti di Word. L'ho provato con i file di Microsoft PowerPoint, ma non decodificherà i file OpenOfficeImpress salvati come .ppt

Per i file .pptx potresti dare un'occhiata 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;
}
Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top